declare l_char varchar2(20); 2 begin 3 select * into l_char from dual; 4 dbms_output.put_line(l_char); 5 end; 6 /
set serveroutput on; declare v_name varchar2(30); begin --当输出只是一条记录时用into,多条记录时用游标 select table_name into v_name from user_tables where table_name='EMP'; dbms_output.put_line(v_name); end;
begin execute immediate 'select * from dual'; end; 这样是可以运行的,但是没有意义,在procedure里,你要把结果传出才有意义
declare
text dual.dummy%type;
begin
select * into text from dual;
end;
第二个叫匿名块,就是没有起名的plsql程序代码。
在plsql程序中,没有into字句的select 语句是没有意义的(这是oracle的规定)。你可以这么理解:
1、直接写sql结果是可以显示出来供你只见看得,因此不用into
2、写在程序里面,查询的结果就是要利用的,因此需要放到into字句的变量里面。
2 begin
3 select * into l_char from dual;
4 dbms_output.put_line(l_char);
5 end;
6 /
set serveroutput on;
declare v_name varchar2(30);
begin
--当输出只是一条记录时用into,多条记录时用游标
select table_name into v_name from user_tables where table_name='EMP';
dbms_output.put_line(v_name);
end;
begin
execute immediate 'select * from dual';
end;
这样是可以运行的,但是没有意义,在procedure里,你要把结果传出才有意义