发布网友 发布时间:2022-05-02 04:39
共3个回答
懂视网 时间:2022-05-02 09:00
exec query_employee(7788,:name);
print name ;
eg4)带有IN OUT参数
create or replace procedure compute
(num1 IN OUT number)
eg5)给子程序传递变量和数据
create or replace procedure add_dept
(dno number,dname varchar2 default null,loc varchar2 default null)
is
begin
insert into dept values(dno,dname,loc);
传递变量
exec add_dept(50,‘sales‘,‘new youk‘);
exec add_dept(60);
exec add_dept(70,‘add‘);
exec add_dept(dname=>‘sals‘,dno=>50);
exec add_dept(dno=>60);
exec add_dept(70,dname=>‘dsldsf‘);
【过程函数的维护 】user_source;
建立了过程之后,Oracle会将过程名,源代码及其执行代码存放到数据字典中,当调用过程时,应用程序会按照其执行代码直接执行,而不需要重新解析过程代码,所以子程序优于执行直接sql语句
select text from user_source where name =‘ADD_DEPT‘;
drop procedure add_dept;
select object_name ,created,status from user_objects where object_type in (‘PROCEDURE‘,‘FUNCTION‘); user_objects包含了当前用户的所有对象。
【编译的排错】USER_ERRORS维护此用户当前的错误
show errors procedure procedure_name;
select line||‘/‘||position ,text from user_errors where name=‘XXXNAME‘;
【函数和过程有个依赖关系】
依赖关系有直接还有间接,间接就是隔山打牛,直接你就懂了,引用了哪个对象,哪个对象就叫做被引用对象,两种方法确定关系,数据字典user_dependencies 和deptree ideptree后者可以确定直接还是间接依赖,唯一需要注意的是当修改了被引用对象的结构时,相关依赖对象就会变成无效状态,需要重新编译这些存储对象
alter procedure add_employee complie;
alter view dept10 complie;
alter function get_info complie;
http://aklaus.blog.51cto.com/9724632/1950055 这个说明替代变量的使用
【函数】用于返回特定的数据,语法如下
create or replace function function_name
(argument1 [model1] datatype1,
argument2 [model2] datatype2,
...)
return datatype
is|as
plsql block;
注意的是 函数的头部必须带有return字句,在函数体内至少存在一条return语句。
eg1)最简单的函数
SQL> create or replace function get_user
2 return varchar2
3 is
4 v_user varchar2(10);
5 begin
6 select username into v_user from user_users;
7 return v_user;
8 end;
9 /
SQL> var v1 varchar2(100);
SQL> exec :v1:=get_user; 利用替代变量及调用使用方法,有歧义的是exec :v1:get_user为什么执行完之后就显示了结果,有可能是环境变量问题
v1
---------
SCOTT
SQL> print v1
v1
---------
SCOTT
SQL> select get_user from dual;
GET_USER
--------------------------------------------------------------------------------
SCOTT
SQL> set serveroutput on;
SQL> exec dbms_output.put_line(get_user);
SCOTT
PL/SQL procedure successfully completed
之后的就是带参数IN OUT之类的用法 注意如果带了out参数,那么必须定义变量接收out参数的输出值,不能在sql语句中调用该函数。
【函数的使用限制】
函数必须返回数据,只能作为表达式的一部分调用,函数可以使用以下地方调用:
select命令
where跟having字句
connect by startwith order by 以及group by
insert values中
update set 中
sql语句中只能调用存储函数(服务器端的) 调用的函数只能带有输入参数,函数类型不能是plsql特有的数据类型如boolean table record 调用的函数不能包含insert update delete语句
本文出自 “运维邦” 博客,谢绝转载!
PLSQL子程序即PLSQL块
标签:create procedure 函数 function 过程
热心网友 时间:2022-05-02 06:08
称为存储过程和函数,它们的集合称为子程序热心网友 时间:2022-05-02 07:26
declared @i int declared @j int set @i=2 set @j=1 while @j<=100 begin if --'判断@j是素数 这个你自己去写就可以了 许多程序都差不多 print @j end