存储过程 函数
子程序
有名字 存储在数据库
同过名字调用
创建的时候被编译
可以被其他有名或者无名的块调用
语法
create or replace procedure testP1
as
--声明
begin
--可执行
dbms_output.put_line('hello world');
end;
/
使用
execute testP1;
call testP1();
begin
testP1;
end;
/
dbms_output.put_line()
带参数
---varchar2不加长度
create or replace procedure println(v_name varchar2)
as
begin
dbms_output.put_line(v_name);
end;
/
begin
println('adsads');
end;
/
in out in out 参数
out被赋值
create or replace procedure testP2(v_str out varchar2)
as
begin
println('='||v_str||'=');
v_str:='handson';
end;
/
declare
v_str varchar2(20):='hello';
begin
println(v_str);
testP2(v_str);--要求必须是声明过的变量传入
println(v_str);
println('asdasa');
--testP2('asdasd');
end;
/
create or replace procedure testP2(v_str in out varchar2,v_name in varchar2,salary out number)
as
begin
println('='||v_str||'=');
v_str:='handson';
end;
/
函数
明确返回类型
调用
create or replace function testF1(v_name varchar2)
return number
as
v_num number:=length(v_name);
begin
println(v_name);
return v_num;
end;
/
调用
declare
num number;
begin
num:=testF1('handson');
println(num);
end;
/
select testF1(name) from testA;
plsql 给变量赋值有哪几种方式?
初始值
可执行部分赋值
out procedure function
function 返回值
select into
fetch into