ALTER PROC Experience
@Subject1 INT
,@Subject2 INT
,@TableNumber INT
,@IDR INT OUTPUT
AS
BEGIN
DECLARE @CMDS VARCHAR(MAX);
DECLARE @Subj1 VARCHAR(10);
SET @Subj1=CONVERT(varchar(10),@Subject1);
DECLARE @Subj2 VARCHAR(10);
SET @Subj2=CONVERT(varchar(10),@Subject2);
DECLARE @TableNames VARCHAR(100);
SET @TableNames='TableNo_'+CONVERT(varchar(50),@TableNumber);
SET @CMDS='INSERT INTO '+@TableNames+' (@Subject1,@Subject1) VALUES('''+@Subj1+''','''+@Subj2+''');'
EXEC (@CMDS);
SELECT @IDR = SCOPE_IDENTITY();
END
插入不是问题,它正在工作,但我无法获取最后插入的 id,并且无法将其作为输出发布。我正在使用 mssql 和存储过程(SELECT @IDR = SCOPE_IDENTITY() 并输出此值)
试试这个:
ALTER PROCEDURE Experience
@Subject1 INT,
@Subject2 INT,
@TableNumber INT,
@IDR INT OUTPUT
AS
BEGIN
DECLARE @CMDS NVARCHAR(MAX);
DECLARE @Subj1 NVARCHAR(10), @Subj2 NVARCHAR(10), @TableNames NVARCHAR(100);
SET @Subj1 = CONVERT(NVARCHAR(10), @Subject1);
SET @Subj2 = CONVERT(NVARCHAR(10), @Subject2);
SET @TableNames = N'TableNo_' + CONVERT(NVARCHAR(50), @TableNumber);
SET @CMDS = N'INSERT INTO ' + @TableNames + ' (Subject1, Subject2) VALUES (' + @Subj1 + ',' + @Subj2 + ');
SELECT @IDR = SCOPE_IDENTITY();';
EXEC sp_executesql @CMDS, N'@IDR INT OUTPUT', @IDR OUTPUT;
-- Output the ID for the caller
SELECT @IDR;
END