【问题标题】:How to declare variables in stored procedure using Select statement in PL/SQL如何在 PL/SQL 中使用 Select 语句在存储过程中声明变量
【发布时间】:2016-02-15 13:37:27
【问题描述】:

我想通过使用Select 语句声明变量来在PL/SQL 中创建一个存储过程。我该如何创建它?

我的存储过程看起来像

CREATE PROCEDURE ValueFinders
(REGION1 IN VARCHAR2(32 Byte),CONFIG1 IN VARCHAR2(128 Byte))

DECLARE GROUP1 VARCHAR2(128 Byte);
BEGIN
SET GROUP1:= Select GROUP from PRODUCTINFO where REGION=REGION1 AND CONFIG=CONFIG1;

select * from DEAL where GROUP=GROUP1; 

END

exec ValueFinders('ASIA','ABC');

上面的代码向我显示错误。请帮忙。谢谢

【问题讨论】:

    标签: oracle stored-procedures plsql


    【解决方案1】:

    添加 into GROUP1 确保它返回一个 1 row ,并且 group 具有相同的数据类型,我也建议作为一个好习惯添加一个异常。

    这样做

      CREATE PROCEDURE ValueFinders
        (REGION1 IN VARCHAR2(32 Byte),CONFIG1 IN VARCHAR2(128 Byte))
    
        DECLARE GROUP1 VARCHAR2(128 Byte);
        BEGIN
       -- SET GROUP1:= Select GROUP from PRODUCTINFO where REGION=REGION1 AND CONFIG=CONFIG1;
    
    Select GROUP into GROUP1 from PRODUCTINFO where REGION=REGION1 AND CONFIG=CONFIG1;
    
       -- select * from DEAL where GROUP=GROUP1; 
    
        END
    

    【讨论】:

    • 但我也想从 DEAL 表中选择值...这怎么可能。
    • 在过程(或块语句)中,当您执行 select 时,您应该在变量中添加(进入)它,因此对于第二个选择,您应该为列添加进入,例如select value into group2 from deal where group=group1@AmitAgarwal
    • 这个错误意味着你没有一个名为 config1 的列检查你的表结构并将 config1 替换为一个有效的列名@AmitAgarwal
    猜你喜欢
    • 2016-04-20
    • 2023-03-20
    • 2021-07-03
    • 1970-01-01
    • 2017-03-29
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多