我想基于以下方式创建存储过程:
ALTER PROCEDURE spGetLastId
(
@table_name varchar(100)
)
AS
BEGIN
DECLARE @DBSql varchar(2000)
SET @DBSql = 'SELECT MAX(id) as ''LastId'' FROM ' + @table_name
EXEC sp_executesql @DBSql
END
此过程必须显示我作为参数传递的任何表的最后一个ID。
谢谢和问候,
答案 0 :(得分:3)
将@DBSql
从varchar
更改为nvarchar
,这样可行,或者查看内置的IDENT_CURRENT()
。
答案 1 :(得分:1)
不确定它是否正在寻找,但是如果您正在插入记录然后检索生成的最后一个标识值,那么您可以在插入后使用SELECT SCOPE_IDENTITY()...
INSERT INTO MyTable (col1, col2)
VALUES (val1, val2);
SELECT SCOPE_IDENTITY()
否则,您的过程应该适合您想要的,尽管您应该将@DbSql的数据类型更改为nvarchar而不是varchar。
答案 2 :(得分:0)
我知道做这种工作的唯一用例是使用构建自己的IDENTITY字段。
如果您这样做,请停止并使用SQL Server提供的IDENTITY。
如果您想将自己的值插入IDENTITY列,请阅读SET IDENTITY_INSERT TABLENAME ON;