我正在嘗試編寫一個以表名作爲參數的存儲過程。是的,我已經知道這是一個安全漏洞,但這是一個內部存儲過程,不會面臨SQL注入的典型風險。以表名作爲參數和查詢超過4000個字符的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 Server 2005.問題是,MAX實際上是4000. – a432511 2009-11-24 16:32:18
@ a432511:這是不正確的。 varchar(MAX)的最大大小是2^31。 – 2009-11-24 16:35:11
嗯......我開始認爲你對這個建議是正確的,它可能已經解決了我的主要問題,但我的查詢中也有一個語法問題。謝謝您的幫助! – a432511 2009-11-24 16:36:17