存储过程脚本,function ,package创建类似
create or replace PROCEDURE P_TEST(a in number,b in number,c out number)
as
begin
c:=bitand(a,b);
end p_test;sqlplus调用
SQL> set serveroutput on
SQL> declare c number;
2 begin
3 p_test(1,2,c);
4 dbms_output.put_line(c);
5 end;
6 /
0PL/SQL 过程已成功完成。SQL>
SQL Navigator/TOAD中调用
找到P_TEST后run就可以了
create or replace PROCEDURE P_TEST(a in number,b in number,c out number)
as
begin
c:=bitand(a,b);
end p_test;sqlplus调用
SQL> set serveroutput on
SQL> declare c number;
2 begin
3 p_test(1,2,c);
4 dbms_output.put_line(c);
5 end;
6 /
0PL/SQL 过程已成功完成。SQL>
SQL Navigator/TOAD中调用
找到P_TEST后run就可以了
CREATE OR REPLACE PROCEDURE PROC_NAME
(
PARAMETER1 IN DATATYPE,
PARAMETER2 IN OUT DATATYPE,
PARAMETER3 OUT DATATYPE
)
AS
BEGIN
/* PROCEDURE BODY HERE */
END PROC_NAME;
2、在sqlplus中调用
无输出参数的调用
EXEC PROC_NAME(PARA1,PARA2);
有输出参数的调用
DECLARE
OUT_PARA DATA_TYPE;
BEGIN
PROC_NAME(PARA1,OUT_PARA);
END;
3、第三方工具,可以打开过程,选调试
CREATE OR REPLACE PACKAGE "SCOTT"."HWTYPE" as
TYPE HWCURSOR IS REF CURSOR;
end;2、创建存储过程
CREATE OR REPLACE PROCEDURE "SCOTT"."PROC_TEST_CURSOR" (DDD OUT
HWTYPE.HWCURSOR)
as
var_DEPTNO DEPT.DEPTNO%TYPE;
var_DNAME DEPT.DNAME%TYPE;
var_LOC DEPT.LOC%TYPE;
begin
--这样可以动态设置游标了。
AA:='SELECT DEPTNO,DNAME,LOC FROM DEPT';
open DDD for aa;
--用起来和一般游标一样。
FETCH DDD INTO var_DEPTNO,var_DNAME,var_LOC;
WHILE DDD%FOUND LOOP
DBMS_OUTPUT.PUT_LINE(var_DEPTNO);
DBMS_OUTPUT.PUT_LINE(var_DNAME);
DBMS_OUTPUT.PUT_LINE(var_LOC);
FETCH DDD INTO var_DEPTNO,var_DNAME,var_LOC;
END LOOP;
CLOSE DDD;
EXCEPTION
WHEN OTHERS THEN
IF DDD%ISOPEN THEN
CLOSE DDD;
END IF;
end;
3、sqlplus中进行测试:set serverout on
var aa REFCURSOR
exec scott.PROC_TEST_CURSOR(:aa);
print :aa;