执行后如何使用参数获取存储过程文本?

时间:2014-02-15 10:08:14

标签: c# sql-server

我有这个存储过程

 create proc ins (@val1 nvarchar(50), @val2 nvarchar(50))
 as
 insert into mytable values (@val1,@val2)
 --======================================================
 exec ins(1,2)

现在我需要获取具有替换值的存储过程文本
如下

 insert into mytable values (1,2)

2 个答案:

答案 0 :(得分:0)

在插入行之后创建一个字符串变量,然后选择该变量

insert into mytable values (@val1,@val2)

DECLARE @res as nvarchar(200)
set @res = N"insert into mytable 
values (" + @val1 + N"," + @val2 +N")"
SELECT @res

答案 1 :(得分:0)

您可以使用商店过程中的 OUTPUT 子句来获取插入的值。

CREATE PROCEDURE ins 
@val1 nvarchar(50), 
@val2 nvarchar(50)
AS
BEGIN
 SET NOCOUNT ON;

   DECLARE @rtn_Table TABLE (val1 nvarchar(50), val2 nvarchar(50))

 INSERT INTO  mytable (Col1, Col2)
 OUTPUT inserted.Col1, inserted.Col2 INTO @TABLE
 VALUES (@val1,@val2)


  SELECT * FROM @TABLE

END

执行程序

DECLARE @Var1 NVARCHAR(50);
DECLARE @Var2 NVARCHAR(50);

SET @Var1 = 'value1';
SET @Var2 = 'value2';

DECLARE @r_Table TABLE (val1 nvarchar(50), val2 nvarchar(50));

INSERT INTO @r_Table (val1, val2)
EXECUTE dbo.ins @Var1, @Var2

SELECT * FROM @r_Table