【问题标题】:How to use variable in a declare block?如何在声明块中使用变量?
【发布时间】:2019-10-04 17:59:41
【问题描述】:
Declare str varchar2(100);
Begin
str := 'first,last,middle';
select regexp_substr(str, '[^,]+', 1, rownum) as SeparatedStr
from dual
connect by rownum <= length(str) - length(replace(str, ',', '')) + 1;
end;

我对 PL/SQL 很陌生,曾经是 T-SQL 专家。搜索了这么多文章后,我真的不确定如何使用变量。只是需要帮助教我如何使用声明的变量。

【问题讨论】:

    标签: oracle-sqldeveloper plsqldeveloper


    【解决方案1】:

    变量有助于存储选择查询的结果,但这取决于选择查询是给​​出单行还是多行作为输出。

    复制您的查询如下:

    1.
    
         DECLARE
            str VARCHAR2(100);
            result VARCHAR2(100);
            BEGIN
            str := 'first,last,middle';
            SELECT str INTO result FROM dual;
            dbms_output.put_line('str: '||result);
            END;
            /
    
    2. As your SELECT query is producing more than one row it can not be assigned into a scalar variable.
    
    DECLARE 
        str VARCHAR2(100);
        BEGIN
        FOR I IN(
        WITH TEST AS
        (SELECT 'first,last,middle' AS str FROM dual)
        SELECT regexp_substr(str, '[^,]+', 1, ROWNUM) AS separatedstr
        FROM TEST
        CONNECT BY ROWNUM <= LENGTH(str) - LENGTH(REPLACE(str, ',', '')) + 1) LOOP
        dbms_output.put_line(I.separatedstr);
        END LOOP;
        END;
        /
    

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2021-01-02
      • 2014-06-23
      • 1970-01-01
      • 2012-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多