我有一个存储过程,我希望将该表的行数分配给一个变量,然后使用该变量。
我称之为这样的程序:
EXEC TEST.dbo.myProc nameOfTable这一程序类似于:
CREATE PROCEDURE myProc @table_name varchar(1024) AS
BEGIN
DECLARE @Nval INT
/* SOME INSTRUCTIONS */
SELECT @Nval = COUNT(*) FROM @table_name
END 在执行时,我得到了一个错误:
Msg 156,15级,状态1,过程nLQ,第57行 关键字“FROM”附近的语法不正确。
如何分配变量@Nval
发布于 2013-06-20 08:09:07
尝尝这个
ALTER PROCEDURE [dbo].[sp_tablenametest]
@table_name varchar(50),
@PMId int,
@ValueEq int
AS
BEGIN
SET NOCOUNT ON;
DECLARE @cmd AS NVARCHAR(max)
SET @cmd = N'SELECT * FROM ' + @table_name +
' WHERE Column1 = ''' + @PMId + '''' +
' AND Column2= ''' + @ValueEq + ''''
EXEC sp_executesql @cmd
END发布于 2011-05-04 00:27:21
FROM @table_name,您不能像这样参数化一个表名。唯一的方法是执行动态TSQL。
在此之前,请阅读:动态SQL的诅咒与祝福
https://stackoverflow.com/questions/5877207
复制相似问题