首页 > 解决方案 > PLSQL 中的变量

问题描述

我想获得在我的过程中定义的值,如下所述。

declare
     city varchar2(50) := 'XYZ';
     TYPE table_type is table of table_name%rowtype;
     var table_type;

begin
     select * bulk collect into var from table_name;

     DBMS_OUTPUT.PUT_LINE(var(1).field); -- Output is City

我想要的输出

       DBMS_OUTPUT.PUT_LINE(var(1).field); -- Output is XYZ

我怎样才能做到这一点?

标签: oracleplsqlprocedure

解决方案


首先,您的代码不起作用。其次,如果要恢复变量,则不需要批量收集

例子

create table mytest ( c1 varchar2(50) ;

insert into mytest values ( 'XYZ' );

commit;

然后

SQL> set serveroutput on
declare
     vcity mytest.c1%type := 'XYZ';
     var   mytest.c1%type;
begin
     select c1 into var from mytest where c1=vcity;
         DBMS_OUTPUT.PUT_LINE('vcity is '||vcity||' ');
         DBMS_OUTPUT.PUT_LINE('var is '||var||' ');
end;
/SQL>   2    3    4    5    6    7    8    9
vcity is XYZ
var is XYZ

PL/SQL procedure successfully completed.

SQL>
  • vcity只是一个使用列 c1 的类型定义的变量,但分配给一个常量,在本例中为 'XYZ'
  • var是我用来恢复表中 c1 值的变量,无论该值是什么。

您根本不需要在这里批量收集。


推荐阅读