【发布时间】:2009-11-24 16:24:21
【问题描述】:
我正在尝试编写一个以表名作为参数的存储过程。是的,我已经知道这是一个安全漏洞,但这是一个内部存储过程,不会面临 SQL 注入的典型风险。
到目前为止,我所拥有的是以下内容:
CREATE PROCEDURE [dbo].[myprocedure]
@tableName sysname
AS
DECLARE @cmd nvarchar(4000)
SET @cmd = N' Select blah blah from ' + @tableName
EXEC (@cmd)
GO
该查询理论上可以工作,但我的问题是我的查询长度超过 4000 个字符。是否有另一种方法可以在长度超过 4000 个字符(这是 nvarchar 的最大值)的 cmd 变量中使用 @tableName?
【问题讨论】:
标签: sql sql-server stored-procedures