【发布时间】:2014-11-13 15:56:00
【问题描述】:
我想编写一个包含多个 SQL 语句的字符串,通过 ODBC 发送,其中的常量表示为“变量”以提高易读性/维护性。我相信我需要使用 DECLARE 块。我不想编写过程或函数,这是一个临时查询。
以下测试 CTE 可以单独工作(没有开始/结束块):
WITH X AS ( SELECT 'HELLO' from DUAL ) SELECT * FROM X;
但是当我运行它时
declare
badgerId CHAR(32); /*todo, use me later, a few times within multiple CTEs*/
begin
WITH X AS ( SELECT 'HELLO' from DUAL ) SELECT * FROM X;
end;
我得到错误:
Error starting at line 2 in command:
declare
badgerId CHAR(32); /*todo, use me later*/
begin
WITH X AS ( SELECT 'HELLO' from DUAL ) SELECT * FROM X;
end;
Error report:
ORA-06550: line 4, column 1:
PLS-00428: an INTO clause is expected in this SELECT statement
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.
*Action:
这是什么乱七八糟的东西?在 SQL Server 中,我只需键入即可。
DECLARE @badgerId CHAR(32);
随时在SQL语句中,这太棒了。什么是 Oracle 等价物?
干杯!
【问题讨论】:
-
你不是我,很明显!下次尝试回答问题,而不是光顾提问的人。
-
This might be helpful。取决于您是否真的要返回单个值或多行,在这种情况下您可能需要一个 ref 游标。
标签: oracle common-table-expression