kullanabileceğiniz üç yol vardır: RETURN değeri ve OUTPUT parametresi ve bir sonuç kümesi
AYRICA, kalıbı kullanıp kullanmadığınıza dikkat edin: SELECT @Variable=column FROM table ...
Sorgudan döndürülen birden fazla satır varsa, @ Değişkeniniz yalnızca sorgu tarafından döndürülen son satırdaki değeri içerecektir.
DÖNÜŞ DEĞERİ
, sorgunuz en azından nasıl adlandırdığınıza bağlı olarak bir int alanı döndürdüğünden. bu numarayı kullanabilirsin:
CREATE PROCEDURE GetMyInt
( @Param int)
AS
DECLARE @ReturnValue int
SELECT @ReturnValue=MyIntField FROM MyTable WHERE MyPrimaryKeyField = @Param
RETURN @ReturnValue
GO
ve şimdi prosedürünüzü şu şekilde arayın:
DECLARE @SelectedValue int
,@Param int
SET @Param=1
EXEC @SelectedValue = GetMyInt @Param
PRINT @SelectedValue
bu yalnızca INT'ler için işe yarar, çünkü RETURN yalnızca tek bir int değeri döndürebilir ve null'lar sıfıra dönüştürülür.
ÇIKIŞ PARAMETRESİ
bir çıkış parametresi kullanabilirsiniz:
CREATE PROCEDURE GetMyInt
( @Param int
,@OutValue int OUTPUT)
AS
SELECT @OutValue=MyIntField FROM MyTable WHERE MyPrimaryKeyField = @Param
RETURN 0
GO
ve şimdi prosedürünüzü şu şekilde arayın:
DECLARE @SelectedValue int
,@Param int
SET @Param=1
EXEC GetMyInt @Param, @SelectedValue OUTPUT
PRINT @SelectedValue
Çıktı parametreleri yalnızca bir değer döndürebilir, ancak herhangi bir veri türü olabilir
Sonuç
kümesi için SONUÇ SETİ prosedürü aşağıdaki gibi yapın:
CREATE PROCEDURE GetMyInt
( @Param int)
AS
SELECT MyIntField FROM MyTable WHERE MyPrimaryKeyField = @Param
RETURN 0
GO
şu şekilde kullanın:
DECLARE @ResultSet table (SelectedValue int)
DECLARE @Param int
SET @Param=1
INSERT INTO @ResultSet (SelectedValue)
EXEC GetMyInt @Param
SELECT * FROM @ResultSet
sonuç kümelerinde birçok satır ve herhangi bir veri türünden birçok sütun olabilir