【问题标题】:Select query on stored procedure with out parameters选择不带参数的存储过程查询
【发布时间】:2018-04-02 04:50:55
【问题描述】:

我在oracle SQL developer上写了Oracle存储过程,参数如下

    create or replace PROCEDURE "SYSLOCKDAILY" 
    Is
     BEGIN


    select * from PDB2B_SYSTEMLOCKINFO 
           where ISDAILY = 1 
             and active = 1 
             and TO_TIMESTAMP (to_char(sysdate,'HH12:MI AM'),'HH12:MI AM') >=TO_TIMESTAMP (STIME,'HH12:MI AM') 
             and TO_TIMESTAMP (to_char(SYSDATE,'HH12:MI AM'),'HH12:MI AM') <= TO_TIMESTAMP (ETIME,'HH12:MI AM');



    COMMIT;
    END SYSLOCKDAILY;

但我在错误日志中收到如下错误。请帮我解决这个问题。

错误(9,2):PLS-00428:此 SELECT 语句中应有一个 INTO 子句

【问题讨论】:

    标签: sql oracle stored-procedures plsql


    【解决方案1】:

    在 PL/SQL 中,选择语句的列必须使用 INTO 关键字分配给变量。试试:

    DECLARE
        v_number_of_rows int;
    BEGIN
        SELECT COUNT(*) 
        INTO v_number_of_rows 
        FROM PDB2B_SYSTEMLOCKINFO 
        WHERE ...<your query>;
    END;
    

    在本例中,单个值将存储在v_number_of_rows。如果您需要处理多行,我建议您阅读Cursors。

    【讨论】:

    • 它正在工作,非常感谢。我是 oracle 新手,这就是我发布此内容的原因。
    • INTO 关键字位于SELECT 列表的末尾,例如select count(*) into v_number_of_rows from ...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-09
    • 1970-01-01
    • 2020-02-12
    • 2019-07-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多