4

使用查询查询时是否可以定义变量范围?这有效

return queryExecute("
        SELECT Title, Slug, Menu, MenuOrder
        FROM qryResult
        WHERE Menu = 'Y'
        ORDER BY MenuOrder
        ",
        [],
        {dbtype = "query"}
        );

这不起作用。它抛出一个错误

return queryExecute("
        SELECT Title, Slug, Menu, MenuOrder
        FROM local.qryResult
        WHERE Menu = 'Y'
        ORDER BY MenuOrder
        ",
        [],
        {dbtype = "query"}
        );

消息
查询的查询语法错误。
遇到“本地。StackTrace java.sql.SQLException:
Query Of Queries 语法错误。
遇到”本地。在 Coldfusion.sql.imq.jdbcStatement.parseSQL(jdbcStatement.java:590) 在 Coldfusion.sql.imq.jdbcStatement.fetchResult(jdbcStatement.java:547) 在 ORDER BY MenuOrder ", [], {dbtype = "query"} );

4

1 回答 1

7

LOCALColdFusion Query of Queryand中的保留字SQL

LOCAL所以,用square brackets[]这样的包装:

return queryExecute("
        SELECT Title, Slug, Menu, MenuOrder
        FROM [local].qryResult
        WHERE Menu = 'Y'
        ORDER BY MenuOrder
        ",
        [],
        {dbtype = "query"}
        );

或者

对函数局部范围使用其他名称,即

var newLocal = structNew();
newLocal.qryResult = queryNew("");
return queryExecute("
        SELECT Title, Slug, Menu, MenuOrder
        FROM newLocal.qryResult
        WHERE Menu = 'Y'
        ORDER BY MenuOrder
        ",
        [],
        {dbtype = "query"}
        );
于 2015-11-04T06:06:05.993 回答