Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
JDBC sürücüsünü indirin
Çağırabileceğiniz SQL Server saklı yordamı, saklı yordamın verileri çağıran uygulamaya geri döndürmek için kullandığı parametreler olan bir veya daha fazla OUT parametresi döndüren yordamdır. SQL Server için Microsoft JDBC Sürücüsü, bu tür saklı yordamı çağırmak ve döndürdüğü verileri işlemek için kullanabileceğiniz SQLServerCallableStatement sınıfını sağlar.
JDBC sürücüsünü kullanarak bu tür saklı yordamı çağırdığınızda, call sınıfının prepareCall yöntemiyle birlikte SQL kaçış sırasını kullanmanız gerekir.
call OUT parametrelerine sahip kaçış dizisi için söz dizimi aşağıdaki gibidir:
{call procedure-name[([parameter][,[parameter]]...)]}
Uyarı
SQL kaçış dizileri hakkında daha fazla bilgi için bkz. SQL kaçış dizilerini kullanma.
Kaçış dizisini call oluştururken soru işareti (?) karakterini kullanarak OUT parametrelerini belirtin. Bu simge, saklı yordamdan döndürülen parametre değerleri için bir yer tutucu işlevi görür. OUT parametresi için bir değer belirtmek için, saklı yordamı çalıştırmadan önce SQLServerCallableStatement sınıfının registerOutParameter yöntemini kullanarak her parametrenin veri türünü belirtmeniz gerekir.
registerOutParameter yönteminde OUT parametresi için belirttiğiniz değer, java.sql.Types dosyasında bulunan ve yerel SQL Server veri türlerinden biriyle eşlenen JDBC veri türlerinden biri olmalıdır. JDBC ve SQL Server veri türleri hakkında daha fazla bilgi için bkz. JDBC Sürücüsü veri türlerini anlama.
OUT parametresi için registerOutParameter yöntemine bir değer geçirdiğinizde, yalnızca parametre için kullanılacak veri türünü değil, aynı zamanda parametrenin sıralı yerleşimini veya saklı yordamdaki parametrenin adını da belirtmeniz gerekir. Örneğin, saklı yordamınız tek bir OUT parametresi içeriyorsa sıra değeri 1 olur. Saklı yordam iki parametre içeriyorsa, ilk sıra değeri 1, ikinci sıra değeri 2'dir.
Uyarı
JDBC sürücüsü, CURSOR, SQLVARIANT, TABLE ve TIMESTAMP SQL Server veri türlerinin OUT parametreleri olarak kullanılmasını desteklemez.
Örneğin, AdventureWorks2025 örnek veritabanında aşağıdaki saklı yordamı oluşturun:
CREATE PROCEDURE GetImmediateManager
@employeeID INT,
@managerID INT OUTPUT
AS
BEGIN
SELECT @managerID = ManagerID
FROM HumanResources.Employee
WHERE EmployeeID = @employeeID
END
Bu saklı yordam, belirtilen IN parametresine (employeeID) göre bir tamsayı olan ve aynı zamanda bir tamsayı olan tek bir OUT parametresi (managerID) döndürür. OUT parametresinde döndürülen değer, tabloda yer alan EmployeeID'yi temel alan ManagerID değeridir HumanResources.Employee .
Aşağıdaki örnekte, AdventureWorks2025 örnek veritabanına açık bir bağlantı işleve geçirilir ve execute yöntemi GetImmediateManager saklı yordamını çağırmak için kullanılır.
public static void executeStoredProcedure(Connection con) throws SQLException {
try(CallableStatement cstmt = con.prepareCall("{call dbo.GetImmediateManager(?, ?)}");) {
cstmt.setInt(1, 5);
cstmt.registerOutParameter(2, java.sql.Types.INTEGER);
cstmt.execute();
System.out.println("MANAGER ID: " + cstmt.getInt(2));
}
}
Bu örnekte, parametreleri tanımlamak için sıralı konumlar kullanılır. Alternatif olarak, bir parametreyi sıralı konumu yerine adını kullanarak tanımlayabilirsiniz. Aşağıdaki kod örneği, bir Java uygulamasında adlandırılmış parametrelerin nasıl kullanılacağını göstermek için önceki örneği değiştirir. Parametre adları saklı yordamın tanımındaki parametre adlarına karşılık gelir:
public static void executeStoredProcedure(Connection con) throws SQLException {
try(CallableStatement cstmt = con.prepareCall("{call dbo.GetImmediateManager(?, ?)}"); ) {
cstmt.setInt("employeeID", 5);
cstmt.registerOutParameter("managerID", java.sql.Types.INTEGER);
cstmt.execute();
System.out.println("MANAGER ID: " + cstmt.getInt("managerID"));
}
}
Uyarı
Bu örneklerde saklı yordamı çalıştırmak için SQLServerCallableStatement sınıfının execute yöntemi kullanılır. Saklı yordam da bir sonuç kümesi döndürmediğinden bu kullanılır. Bu durumda executeQuery yöntemi kullanılır.
Saklı yordamlar güncelleştirme sayılarını ve birden çok sonuç kümesini döndürebilir. SQL Server için Microsoft JDBC Sürücüsü, OUT parametreleri alınmadan önce birden çok sonuç kümesinin ve güncelleştirme sayısının alınması gerektiğini belirten JDBC 3.0 belirtimini izler. Yani, uygulamanın CallableStatement.getter yöntemlerini kullanarak OUT parametrelerini almadan önce tüm ResultSet nesnelerini ve güncelleştirme sayılarını alması gerekir. Aksi takdirde, OUT parametreleri alındığında sürücünün almadığı ResultSet nesneleri ve güncelleştirme sayıları kaybolur. Güncelleştirme sayıları ve birden çok sonuç kümesi hakkında daha fazla bilgi için bkz. Güncelleştirme sayısıyla saklı yordam kullanma ve Birden Çok Sonuç Kümesi Kullanma.