Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Kembalikan Output Param dari Prosedur Tersimpan di dalam Prosedur Tersimpan lainnya

Jika ini sama sekali bukan masalah parameter keluaran, melainkan kumpulan hasil, maka tebak SpWithOutputID melakukan sesuatu seperti ini (mengembalikan SELECT dengan satu baris dan satu kolom):

CREATE PROCEDURE dbo.SpWithOutputID
AS
BEGIN
    SET NOCOUNT ON;

    SELECT ID = 4;
END
GO

Kemudian Test1 bisa terlihat seperti ini:

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

Tapi bukankah itu terlihat sangat berantakan bagimu? Ini benar-benar harus bekerja dengan cara ini untuk nilai skalar tunggal:

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

    SELECT @ID = 4; 
END 
GO

Sekarang jauh lebih mudah untuk menggunakan apa yang sebenarnya merupakan parameter keluaran sekarang:

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 Server CTE -Temukan parentID teratas untuk Setiap childID?

  2. Pekerjaan Agen SQL - Daftar tarik-turun Jalankan Sebagai kosong

  3. Bisakah saya menetapkan skema default untuk dalam prosedur tersimpan?

  4. Permintaan PIVOT pada catatan Berbeda

  5. Kehadiran IN dan OUT