【发布时间】:2011-10-20 10:04:22
【问题描述】:
我写了一个存储过程
DECLARE @AreaID AS INT
DECLARE @DayPrior AS INT
DECLARE @TableName AS VARCHAR(50)
DECLARE @StoreQuery AS NVARCHAR(MAX)
DECLARE @SQL_ExtractDlSql AS NVARCHAR(MAX)
DECLARE @ParameterDefinition AS NVARCHAR(2000)
SET @AreaID = 1
SET @DayPrior = 1
SET @TableName = 'Tbl_Lube'
SET @SQL_ExtractDlSql = 'SELECT Download_SQL From
HDDDataPackage.dbo.tbl_HDD_DataDownloadSetting
Where AreaId=@AreaID AND TableName=@TableName'
SET @ParameterDefinition = '@AreaID INT,@DayPrior INT,@TableName VARCHAR(50)'
EXECUTE sp_executesql @SQL_ExtractDlSql,
@ParameterDefinition,
@AreaID,
@DayPrior,
@TableName
PRINT @SQL_ExtractDlSql
在存储过程上方,我得到了我想要的打印结果,但我没有这样做,而是希望将选定的数据存储作为变量。 然后我所做的是我声明了一个变量@StoreSql,并在下面的 SQL 语句中做了一些修改:
变量声明:
DECLARE @StoreSql AS NVARCHAR(MAX)
修改代码:
SET @SQL_ExtractDlSql = 'SELECT @StoreSql = Download_SQL From
HDDDataPackage.dbo.tbl_HDD_DataDownloadSetting
Where AreaId=@AreaID AND TableName=@TableName'
我执行了代码,我得到错误必须声明标量变量“@StoreSql”。
我完全不知道如何处理。任何人都可以提供帮助。此外,我是 sqlserver 的新手,存储过程的新手。
请不要犹豫指出我的任何错误,任何..例如逻辑等。我从错误中吸取教训。
问候 梁克
【问题讨论】:
标签: sql-server-2008 variables stored-procedures scope dynamic-sql