1. 程式人生 > >oracle建立儲存過程常見錯誤以及除錯方法+

oracle建立儲存過程常見錯誤以及除錯方法+

create or replace procedure testoutput is
begin
dbms_output.put_line('hello world! this is the first procedure');
end;

/ --編譯

create or replace procedure a(no1 in number,name1 varchar2,loc varchar2)
is
dept_number number(2) :=no1;
dept_name varchar2(14) :=name1;
dept_loc varchar2(13) :=loc;
begin
 insert into scott.dept values(dept_number,dept_name,dept_loc);
exception
when others then
--dbms_output.put_line('erro');
raise;
end;
/

exec A(50,'50','50');

oracle 11.1.0.6.0 的SQL Developer工具在執行儲存過程是有bug

SQL> create or replace procedure jl_test
2 (a in varchar2,b out varchar2)
3 as
4 begin
5 b:= a;
6 end;
7 /
SQL> var c varchar2(10);
SQL> exec jl_test('01',:c)
PL/SQL 過程已成功完成。
SQL> print c
C
--------------------------------
01

  在java中呼叫儲存過程用的是call ps_name

常見錯誤:

1.從外部檔案匯入建立儲存過程的檔案最後缺少/,導致建立過程中暫停住,沒有正常編譯

2.傳入的引數不必指定長度,而在宣告區必須指定,並且應注意長度型別的匹配

3.不要在sql developer中執行儲存過程,要在命令列中執行

4.在列印前先執行set serveroutput on;

create or replace procedure getClientData6(x out varchar2) is
tempresult varchar2(1024);
begin
tempresult := 'start->';
select customers.contactfirstname into tempresult from customers ;--where customers.customernumber='103';
--select hotelid||hotelname into tempresult from hotel where hotelid =10041764;
x:=tempresult;
dbms_output.put_line(x);
end getClientData6;