Cara menetapkan parameter output ketika Anda menggunakan sp_executesql prosedur tersimpan di SQL Server

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 262499 - Melihat produk di mana artikel ini berlaku.
Perbesar semua | Perkecil semua

Ringkasan

Prosedur tersimpan sistem sp_executesql digunakan untuk menjalankan pernyataan T-SQL yang dapat digunakan kembali beberapa kali, atau untuk menjalankan pernyataan T-SQL dibangun secara dinamis. Dibutuhkan parameter sebagai masukan untuk memproses pernyataan T-SQL atau batch. Hal ini juga memungkinkan output parameter ditetapkan sehingga hasil yang dihasilkan dari pernyataan T-SQL dapat disimpan (meskipun ini tidak didokumentasikan di buku daring SQL Server).

Dua skenario di mana parameter output akan berguna dengan sp_executesql adalah:
  • Jika sp_executesql menghasilkan output yang akan berguna, menyimpan output ini untuk parameter output memungkinkan batch panggilan menggunakan parameter kueri yang lebih baru.
  • Jika sp_executesql mengeksekusi disimpan prosedur yang ditetapkan menggunakan parameter output, parameter output untuk sp_executesql dapat digunakan untuk menahan output yang dihasilkan dari prosedur tersimpan.

Informasi lebih lanjut

Dua contoh berikut ini menunjukkan penggunaan parameter output dengan sp_executesql.

Contoh 1
DECLARE @SQLString NVARCHAR(500)
DECLARE @ParmDefinition NVARCHAR(500)
DECLARE @IntVariable INT
DECLARE @Lastlname varchar(30)
SET @SQLString = N'SELECT @LastlnameOUT = max(lname)
                   FROM pubs.dbo.employee WHERE job_lvl = @level'
SET @ParmDefinition = N'@level tinyint,
                        @LastlnameOUT varchar(30) OUTPUT'
SET @IntVariable = 35
EXECUTE sp_executesql
@SQLString,
@ParmDefinition,
@level = @IntVariable,
@LastlnameOUT=@Lastlname OUTPUT
SELECT @Lastlname
				
Contoh 2
CREATE PROCEDURE Myproc
    @parm varchar(10),
    @parm1OUT varchar(30) OUTPUT,
    @parm2OUT varchar(30) OUTPUT
    AS
      SELECT @parm1OUT='parm 1' + @parm
     SELECT @parm2OUT='parm 2' + @parm
GO
DECLARE @SQLString NVARCHAR(500)
DECLARE @ParmDefinition NVARCHAR(500)
DECLARE @parmIN VARCHAR(10)
DECLARE @parmRET1 VARCHAR(30)
DECLARE @parmRET2 VARCHAR(30)
SET @parmIN=' returned'
SET @SQLString=N'EXEC Myproc @parm,
                             @parm1OUT OUTPUT, @parm2OUT OUTPUT'
SET @ParmDefinition=N'@parm varchar(10),
                      @parm1OUT varchar(30) OUTPUT,
                      @parm2OUT varchar(30) OUTPUT'

EXECUTE sp_executesql
    @SQLString,
    @ParmDefinition,
    @parm=@parmIN,
    @parm1OUT=@parmRET1 OUTPUT,@parm2OUT=@parmRET2 OUTPUT

SELECT @parmRET1 AS "parameter 1", @parmRET2 AS "parameter 2"
go
drop procedure Myproc
				
Untuk informasi lebih lanjut, lihat "sp_executesql (T-SQL)" dan "Menggunakan sp_executesql" di SQL Server buku Online.For informasi lebih lanjut, lihat "Menggunakan sp_executesql" di buku daring SQL Server, dan "sp_executesql (T-SQL) di SQL Server 7.0 buku daring" atau "sp_executesql" di SQL Server 2000 buku daring.

Properti

ID Artikel: 262499 - Kajian Terakhir: 22 Desember 2014 - Revisi: 3.0
Berlaku bagi:
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2005 Workgroup Edition
Kata kunci: 
kbsqlsetup kbinfo kbmt KB262499 KbMtid
Penerjemahan Mesin
PENTING: Artikel ini diterjemahkan oleh perangkat lunak penerjemahan mesin Microsoft, dan mungkin telah diedit oleh Masyarakat Microsoft melalui teknologi CTF dan bukan oleh seorang penerjemah profesional. Microsoft menawarkan baik artikel yang diterjemahkan oleh manusia maupun artikel hasil editan terjemahan oleh mesin/komunitas, sehingga Anda dapat mengakses semua artikel di Sentra Pengetahuan yang kami miliki dalam berbagai bahasa. Namun artikel hasil editan mesin atau bahkan komunitas tidak selalu sempurna. Artikel ini dapat mengandung kesalahan dalam hal kosa kata, sintaksis atau tatabahasa, sangat mirip dengan penutur asing yang membuat kekeliruan ketika berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab atas ketidakakuratan, kesalahan atau kerugian apa pun akibat dari kekeliruan dalam penerjemahan isi atau penggunaannya oleh pelanggan kami. Microsoft juga akan senantiasa memperbarui perangkat lunak penerjemahan mesin dan alat untuk menyempurnakan Editan Hasil Penerjemahan Mesin.
Klik disini untuk melihat versi Inggris dari artikel ini: 262499

Berikan Masukan

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com