My FAQ,最新最全的IT技术FAQ
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 未整理篇 | 技术讨论
  当前位置: > 程序开发 > 数据库开发 > Oracle
这辈子写的第一个PL/SQL过程
作者:未知 时间:2005-09-13 23:41 出处:Blog.ChinaUnix.net 责编:My FAQ
              摘要:这辈子写的第一个PL/SQL过程
这辈子写的第一个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;

嘿嘿,太好了。






 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 myfaq.com.cn All rights reserved. www.myfaq.com.cn 版权所有