istnieją trzy sposoby można użyć: Wartość zwracana, a parametr wyjściowy i zestaw wyników
RÓWNIEŻ, uważaj, jeśli użyj wzorca: SELECT @Variable=column FROM table ...
jeśli z zapytania zostanie zwróconych wiele wierszy, Twoja @Variable będzie zawierała tylko wartość z ostatniego wiersza zwróconego przez zapytanie.
RETURN VALUE
ponieważ zapytanie zwraca pola int, przynajmniej na podstawie tego, jak nazwał ją. można użyć tej sztuczki:
CREATE PROCEDURE GetMyInt
(@Param int)
AS
DECLARE @ReturnValue int
SELECT @ReturnValue=MyIntField FROM MyTable WHERE MyPrimaryKeyField = @Param
RETURN @ReturnValue
GO
i teraz nazywają swoją procedurę jak:
DECLARE @SelectedValue int
,@Param int
SET @Param=1
EXEC @SelectedValue = GetMyInt @Param
PRINT @SelectedValue
to będzie działać tylko dla INT, ponieważ RETURN można zwrócić tylko jedną wartość int i null są konwertowane do zera .
parametr wyjściowy
można użyć parametru wyjściowego:
CREATE PROCEDURE GetMyInt
(@Param int
,@OutValue int OUTPUT)
AS
SELECT @OutValue=MyIntField FROM MyTable WHERE MyPrimaryKeyField = @Param
RETURN 0
GO
i teraz nazywają swoją procedurę jak:
DECLARE @SelectedValue int
,@Param int
SET @Param=1
EXEC GetMyInt @Param, @SelectedValue OUTPUT
PRINT @SelectedValue
parametrów wyjściowych może zwrócić tylko jedną wartość, ale może być dowolny typ danych
WYNIK ZESTAW dla zestawu wynikowego zrobić procedura jak:
CREATE PROCEDURE GetMyInt
(@Param int)
AS
SELECT MyIntField FROM MyTable WHERE MyPrimaryKeyField = @Param
RETURN 0
GO
używać go jak:
DECLARE @ResultSet table (SelectedValue int)
DECLARE @Param int
SET @Param=1
INSERT INTO @ResultSet (SelectedValue)
EXEC GetMyInt @Param
SELECT * FROM @ResultSet
zestawy wyników może mieć wiele wierszy i liczbę kolumn dowolnego typu danych
Wydaje rodzaj Trudno wybrać "najlepszą" odpowiedź, gdy kilku z nich odpowiada na pytanie. Wybrałem najbardziej szczegółowy tutaj. Dzięki. – David