Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Върнете изходен параметър на съхранена процедура в друга съхранена процедура

Ако това всъщност изобщо не е проблем с изходен параметър, а по-скоро набор от резултати, тогава се предполага, че SpWithOutputID прави нещо подобно (връща SELECT с един ред и една колона):

CREATE PROCEDURE dbo.SpWithOutputID
AS
BEGIN
    SET NOCOUNT ON;

    SELECT ID = 4;
END
GO

След това Test1 може да изглежда така:

CREATE PROCEDURE dbo.Test1
AS
BEGIN
    SET NOCOUNT ON;

    DECLARE @ID INT;

    CREATE TABLE #x(ID INT);

    INSERT #x EXEC dbo.SpWithOutputID;

    SELECT TOP (1) @ID = ID FROM #x;

    DROP TABLE #x;
END
GO

Но това не ви ли изглежда наистина объркано? Наистина трябва да работи по този начин за единични, скаларни стойности:

CREATE PROCEDURE dbo.SpWithOutputID
    @ID INT OUTPUT 
AS
BEGIN
    SET NOCOUNT ON;

    SELECT @ID = 4; 
END 
GO

Сега е много по-лесно да се използва това, което наистина е изходен параметър сега:

CREATE PROCEDURE dbo.Test1
AS
BEGIN
    SET NOCOUNT ON;
    DECLARE @ID INT;

    EXEC dbo.SpWithOutputID @ID = @ID OUTPUT;

    SELECT @ID;
END
GO



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL персонализирана поръчка по

  2. Как да копирате огромни данни от таблица в друга таблица в SQL Server

  3. комбиниране на полета за дата и час към DateTime, SQL Server 2008

  4. Блокировка от заключване на обхват на индекс на първичен ключ

  5. Как автоматично да се презареди след използване на identity_insert?