sql >> Databasteknik >  >> RDS >> Sqlserver

Hur ställer man in resultatet av exec lagrad procedur till en variabel?

Istället för:

SET @S=EXEC spGetNthNo @a,@d,@n

Du behöver:

EXEC @S = spGetNthNo @a,@d,@n

Och sedan inom proceduren behöver du något som:

RETURN 100

eller:

RETURN @x

för det värde du vill ha för @S efter att proceduren har körts.

Du kan också använda utdataparametrar. Kombinerat exempel:

IF OBJECT_ID('tempdb..#example') IS NOT NULL DROP PROCEDURE #example
GO

CREATE PROCEDURE #example
  @output_param INT OUTPUT
AS BEGIN
   SET @output_param = 100
   RETURN 200
END
GO

DECLARE @return INT, @param INT
EXEC @return = #example @output_param = @param OUTPUT
SELECT @return as [return value], @param as [output parameter]


  1. CDbCommand::fetchColumn() misslyckades:SQLSTATE[HY000]:Allmänt fel:2014 Kan inte köra frågor medan andra obuffrade frågor är aktiva

  2. node-postgres får fel anslut ECONNREFUSED

  3. sql min-funktion och annan kolumn

  4. Hur kan jag generera (eller få) ett ddl-skript på en befintlig tabell i Oracle? Jag måste återskapa dem i Hive