【问题标题】:Oracle Declare variable and use it in another select queryOracle 声明变量并在另一个选择查询中使用它
【发布时间】:2017-10-08 17:04:29
【问题描述】:

Oracle/toad 新手。

我正在定义一个变量并将其值从选择中插入。设置它的值后,我将它用于另一个选择语句。但这给了我错误,并且这个 SELECT 中应该有 INTO 子句

declare  maxLineNo number := 0;

BEGIN
select Max(b.Line_No) into maxLineNo  FROM  Brokerage b   WHERE b.External_App_Id = 3720     AND b.Account_Id = '16970' ;

SELECT b.External_App_Id   -- this select giving erro
         , maxLineNo + 1
         , b.Currency
         , ''
         , CAST( SUM(b.Brokerage_Amt) as VARCHAR2(17))
         , ''
         , ''
         , 1003  -- 1003 for Report summary
         , ''
    FROM  Brokerage b
   WHERE b.External_App_Id = 3720 
   GROUP BY External_App_Id, B.CURRENCY
   ORDER BY 2; 

DBMS_OUTPUT.PUT_LINE(maxLineNo);  -- this is giving value
end;

【问题讨论】:

  • 在 PL/SQL 块中,SELECT 仅适用于 INTO 子句
  • 那你有什么建议?如果关闭块,var MaxLineNo 将无法在外部使用。
  • 另外,对于空白值,最好写 NULL 而不是 ''。
  • 由于第二个 SELECT 中缺少 INTO 子句,上述内容甚至无法编译,我感觉您看到的内容与此无关。将您的 DBMS_OUTPUT.PUT_LINE 更改为 DBMS_OUTPUT.PUT_LINE('Test #1: ' || maxLineNo);,看看您会得到什么。祝你好运。

标签: sql oracle toad


【解决方案1】:

也许你正在搜索Implicit Statement Results in Oracle Database 12c Release 1

declare  
  maxLineNo number := 0;
  rc sys_refcursor;
BEGIN
select Max(b.Line_No) into maxLineNo
 FROM  Brokerage b
WHERE b.External_App_Id = 3720     AND b.Account_Id = '16970' ;

open rc for
SELECT b.External_App_Id   -- this select giving erro
         , ''
         , b.Currency
         , ''
         , CAST( SUM(b.Brokerage_Amt) as VARCHAR2(17))
         , ''
         , ''
         , 1003  -- 1003 for Report summary
         , ''
    FROM  Brokerage b
   WHERE b.External_App_Id = 3720 
   GROUP BY External_App_Id, B.CURRENCY
   ORDER BY 2; 

DBMS_OUTPUT.PUT_LINE(maxLineNo);  -- this is giving value

dbms_sql.return_result(rc);
end;

【讨论】:

    猜你喜欢
    • 2021-03-09
    • 2020-10-10
    • 1970-01-01
    • 2013-10-22
    • 1970-01-01
    • 2011-04-03
    • 1970-01-01
    • 1970-01-01
    • 2021-06-25
    相关资源
    最近更新 更多