字'DECLARE'附近的语法错误
由于某些原因,我总是收到错误'DECLARE'附近的错误语法''。我应该在哪里声明我的变量,以便它不会抛出错误?我还没有弄清楚这一点,因为我没有找到使用'WITH AS'语句的人,并且试图声明一个变量。字'DECLARE'附近的语法错误
CREATE PROCEDURE qryKeysValues(@KeyValue varchar(5))
AS
BEGIN
WITH tbl1 AS
(SELECT * FROM FN_qryMethods())
DECLARE @SQL varchar(1500)
SET @SQL = 'SELECT ' + @KeyValue+ ' AS fldCode, tbl' [email protected]+ 'Key.fldID, tbl1.fldID
FROM tbl' + @KeyValue + 'Key', tbl1
EXEC(@SQL)
END;
的With
语句采用结构:
WITH CTE_Name
AS
(
Select column from table
)
Select column from CTE_Name
你不能把Declare
你在哪里把它。允许的值为SELECT
,INSERT
,UPDATE
,DELETE
和MERGE
(contrib @alex k)。
也许像这样的东西是你在找什么?
CREATE PROCEDURE qryKeysValues(@KeyValue varchar(5))
AS
BEGIN
DECLARE @SQL varchar(1500);
SELECT * INTO #tbl1 FROM FN_qryMethods();
SET @SQL = 'SELECT ' + @KeyValue+ ' AS fldCode
, tbl' [email protected]+ 'Key.fldID
, #tbl1.fldID
FROM tbl' + @KeyValue + 'Key, #tbl1';
EXEC(@SQL);
END;
这很好,我现在唯一的问题是当我调用过程时为@KeyValue变量赋值。当我尝试执行'exec qryKeysValues('Ab')'时,它会给我一个'无效列名'的错误。我不知道为什么变量指向一个列,我需要帮助的是传递一个值给过程,如果我传递了qryKeyValues('Ab')例如,我希望SQL字符串说... SELECT Ab AS fldCode,tblAbKey.fldID,#tbl1.fldID FROM tblAbKey,#tbl1; – codingManiac
@tripleddev它的工作原理与您在上一个示例中所写的完全相同。从表'tblAbKey'选择一个列'ab'?你想在'fldCode'中写'ab''字符串吗? –
@tripleddev如果答案是肯定的,你应该将varibale设置为'SELECT'''+ @ KeyValue +'''AS fldCode ...' –
* A CTE必须跟一个SELECT,INSERT,UPDATE,MERGE或DELETE语句* - 目前还不清楚是什么你正在尝试做的...... –
可以前'WITH'声明你的变量声明。我会用一个例子来帮助你,但是你很难完成你的整个查询。我没有看到你在任何地方使用'tbl1',并且你的动态sql看起来很乱(打开和关闭撇号的数目不正确)。 –
抱歉纠正了这些问题。我只是试图声明@SQL字符串,然后能够执行它,我遇到的问题是放置变量声明的位置(如果可能的话)。 – codingManiac