RSS
热门关键字:  下载  cms  模版  开源  dedecms
当前位置 :| 主页 > 站长学院 > 数据库 > Oracle >

这辈子写的第一个PL/SQL过程

来源:Blog.ChinaUnix.net 作者:未知 时间:2006-09-14 Tag: 点击:
这辈子写的第一个PL/SQL过程,发现PL/SQL入门也是很简单的。
只有短短的几行,功能更是差多了:查询当前数据库实例名称。

create or replace procedure dbname is
v_dbname varchar2(30);

begin
select name into v_dbname from v$database;
dbms_output.put_line('db name is: '||v_dbname);
end;


相关说明:
1.必须由dba执行,否则出错。
2.执行前须 set serveroutput on
3.依此方式执行:
exec dbname



附录:同事写的一个PL/SQL,可以试一下。注意:不要用sys用户执行。

create or replace procedure test is
v_tname tab.tname%type;
v_count number;
cursor tab_cursor is
select tname from tab;
begin
open tab_cursor;
loop
fetch tab_cursor into v_tname;
execute immediate 'select count(*) from '||v_tname into v_count ;
dbms_output.put_line(v_tname||' '||to_char(v_count));
exit when tab_cursor%notfound;
end loop;
close tab_cursor;
end;

执行方法:
set serveroutput on
exec test

我的那份在这儿,可是却不能执行。
create or replace procedure tabcount is
v_tname varchar2(30);
v_count number;
v_size number;

begin
select count(*) into v_size from tab;
loop
select tname into v_tname from tab where rownum=v_size;
execute immediate 'select count(*) from '||v_tname into v_count;
dbms_output.put_line(v_tname||' '||to_char(v_count));
v_size:=v_size-1;
exit when v_size=0;
end loop;
end;

ERROR at line 1:
ORA-01403: no data found
ORA-06512: at "SCOTT.TABCOUNT", line 8
ORA-06512: at line 1

=========
added by 20050804.
今天学了游标,偶终于也写了一个不会出错的了。

    create or replace procedure tabcount is
    v_tname varchar2(30);
    cursor sor is select tname from tab;
    v_count number;
    begin
    open sor;
    dbms_output.enable(200000);
    v_count:=0;
    loop
    fetch sor into v_tname;
    dbms_output.put_line('tname is '||v_tname);
    v_count:=v_count+1;
    exit when sor%NOTFOUND;
    end loop;
    dbms_output.put_line('counts of tname is '||to_char(v_count));
    close sor;
    end;

嘿嘿,太好了。







最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册
栏目列表