PL SQL程式設計方法大全

2021-12-30 12:17:53 字數 2220 閱讀 1039

pl/sql程式設計方法大全

一、動態sql的拼接(使用replace)

www.2cto.com  

注意使用replace替換達到動態sql拼接的效果,v_psql可做變數傳遞

[plain] 

1  declare  

2  a number:=2;  

3  v_sql varchar2(4000):='select ename from #';  

4  v_psql varchar2(2000):='emp where rownum='||2||' ';  

5  begin  

6  dbms_output.put_line(v_psql);  

7  v_sql:=replace(v_sql,'#',v_psql);  

8  dbms_output.put_line(v_sql);  

9* end;  

sql> /  

emp where rownum=2  

select ename from emp where rownum=2  

pl/sql 過程已成功完成。  

二、通用的分隔函式  www.2cto.com  

[sql] 

create or replace function split  

(  p_string varchar2,  

p_sep varchar2 := ','  --預設按逗號分隔  

)  return type_split pipelined --pipelined關鍵字指定返回結果集使用管道輸出,輸出為表型別  

is  

v_l  pls_integer;  

v_string  varchar2(30000) := p_string;  

begin  

loop  

v_l := instr(v_string,p_sep);  

if v_l > 0 then  

pipe row(substr(v_string,1,v_l-1)); --使用管道函式  

v_string := substr(v_string,v_l+length(p_sep));  

else  

pipe row(v_string);  

exit;  

end if;  

end loop;  

return;  

end split;    

用之前記得建立乙個pl/sql表型別用來儲存輸出的結果:

create or replace type type_split is table of varchar2(1000)

用法:  

select * from table(split('12,aa,qwwq,',',')); 結果

column_value 12

aaqwwq

null

三、取得當前函式或儲存過程的名稱(一般用於錯誤處理)

[sql] 

create or replace function f_getprocname return varchar2  

--獲取函式或者儲存過程自身的名稱及呼叫者  

is  

l_owner  varchar2(30);  

l_name   varchar2(30);  

l_lineno number;  

l_type   varchar2(30);  

begin  

owa_util.who_called_me(l_owner, l_name, l_lineno, l_type);  

return l_owner || '.' || l_name;  

end;  用法 

[sql] 

create or replace procedure p_test  

as  

ex_p01 exception;  

...  

begin  

...  

exception  

when ex_p01 then  

raise_application_error(-20001,  

'在' || f_getprocname || '**現錯誤:('||sqlcode||')--'||sqlerrm||',請檢查!');  

...  

end  p_test;  

PL SQL程式設計方法大全

一 動態sql的拼接 使用replace 注意使用replace替換達到動態sql拼接的效果,v psql可做變數傳遞 1 declare 2 a number 2 3 v sql varchar2 4000 select ename from 4 v psql varchar2 2000 emp ...

PL SQL程式設計方法大全

一 動態sql的拼接 使用replace 注意使用replace替換達到動態sql拼接的效果,v psql可做變數傳遞 1 declare 2 a number 2 3 v sql varchar2 4000 select ename from 4 v psql varchar2 2000 emp ...

PLSQL程式設計

create table emomy1 emon varchar2 100 time1 date drop table emomy1 select from emomy1 begin dbms output.put line hello,world end 定義變數 declare name con...