【发布时间】:2013-07-08 07:41:46
【问题描述】:
我正在创建一个存储过程,它基本上只执行 1 个动态查询,并将另一个动态查询的结果作为 1 列的别名。 但是,我收到以下两个错误(id 没有说明在哪里):
- “=”附近的语法不正确。
- 对象或列名丢失或为空。对于 SELECT INTO 语句,验证每一列都有一个名称。对于其他语句,请查找空别名。不允许使用定义为 "" 或 [] 的别名。将别名更改为有效名称。
这是我的代码:
ALTER PROCEDURE myProcedure
@param1 NVARCHAR(50),
@param2 NVARCHAR(50),
@param3 int
AS
BEGIN
DECLARE @query Nvarchar(2000)
DECLARE @columnName Nvarchar(250)
DECLARE @columnNameOUT Nvarchar(250)
set @columnName = ''
SELECT @query = 'SELECT (@columnNameOUT = CONVERT(time(0), TimeStamps."timeStamp", 108)) AS alias FROM TimeStamps WHERE [param3] = ''' + CAST(@param3 AS VARCHAR) + ''' AND param2 = ''' + @param2 + ''' AND [param1] = ''' + @param1 +''''
EXECUTE sp_executesql @query, N'@columnNameOUT NVARCHAR(30) OUTPUT', @columnNameOUT = @columnName OUTPUT
set @query = ''
IF @param1 IS NULL
BEGIN
SELECT @query = 'SELECT column1 AS '''+@columnName+''', column2, column3 ETA FROM myTable WHERE [param3] = '''+CAST(@param3 AS VARCHAR) +''' AND param2 = '''+@param2+''' AND [param1] IS NULL order by column1'
END
ELSE
BEGIN
SELECT @query = 'SELECT column1 AS '''+@columnName+''', column2, column3 ETA FROM myTable WHERE [param3] = '''+CAST(@param3 AS VARCHAR) +''' AND param2 = '''+@param2+''' AND [param1] ) '''+@param1+''' order by column1'
END
EXEC(@query);
END
【问题讨论】:
标签: sql stored-procedures sql-server-2012 dynamic-sql