У меня есть хранимая процедура, написанная
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, плохо знаком с хранимыми процедурами.
Пожалуйста, не стесняйтесь указывать на мою ошибку, любую ... такую, как логику и т. Д. Я учусь на ошибках.
С уважением, LiangCk