通用选择存储过程

时间:2011-05-31 13:03:59

标签: sql-server-2005 stored-procedures

我想基于以下方式创建存储过程:

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。

谢谢和问候,

3 个答案:

答案 0 :(得分:3)

@DBSqlvarchar更改为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;