PL SQL學習筆記

2021-06-20 15:58:59 字數 4121 閱讀 9147

from

ebs pl/sql儲存過程報表輸出

1.fnd_file.put_line(fnd_file.log,  

l_err_idx || ', 從mes表獲取tool id:' ||  

tool.tool_id || ',出現異常錯誤! ');   2.

fnd_file.put_line(fnd_file.output,' 文字輸出內容....');  

獲取物件結構**

select dbms_metadata.get_ddl('table','cux2_tool_master_all') from dual;   

獲取伺服器字符集

select value  

from nls_database_parameters  

where parameter = 'nls_characterset';  

動態游標

type csr_typ is ref cursor;  

csr_int csr_typ;  

open csr_int for

'select ename from emp';  

執行動態sql

execute immediate 'select ename from emp where deptno=:1 and sal<:2>

declare

p_id number:=1;  

v_count number;  

begin

v_string:=』select

count(*) from table_name a where a.id=:id』;  

execute immediate v_string into v_count using p_id;    

end ;  

declare

v_string varchar2(100);    

v_t t%rowtype ;    

begin

v_string:='select * from t where name like '

't%'

'';    

execute immediate v_string into v_t;    

dbms_output.put_line(v_t.id||' '||v_t.name) ;    

end;   

create or replace trigger my_set_date after logon on database

begin

if (user = 'hr') then

execute immediate 'alter session set nls_date_format = ''yyyy-mm-dd'' ';

end if;

end my_set_date;

/web adi 常用表--通過整合器名稱獲取inte***ce_code

select * from bne_integrators_tl where user_name = 'cux2_主裝置資料匯入5';  

--excel中顯示的字段標題。可以直接update,後更新layout即可生效。

select * from bne_inte***ce_cols_tl t where t.inte***ce_code = 'general_444_intf';  

--execl中每個字段屬性(包含lov引數)。可以直接update,後更新layout即可生效。

select * from bne_inte***ce_cols_b where inte***ce_code = 'general_444_intf';  

使用dbms_sql包執行ddl語句

create

orreplace

procedure proc_dbms_sql   

(   

table_name in varchar2,       --表名 

field_name1 in varchar2,      --欄位名 

datatype1 in varchar2,        --欄位型別 

field_name2 in varchar2,      --欄位名 

datatype2 in varchar2         --欄位型別 

)asv_cursor number;              --定義游標 

v_string varchar2(200);      --定義字串變數 

v_row number;                  --行數 

begin

v_cursor:=dbms_sql.open_cursor;     --為處理開啟游標 

v_string:=』create

table 』||table_name||』(』||field_name1||』 』||datatype1||』,』||field_name2||』 』||datatype2||』)』;   

dbms_sql.parse(v_cursor,v_string,dbms_sql.native);    --分析語句 

v_row:=dbms_sql.execute(v_cursor);   --執行語句 

dbms_sql.close_cursor(v_cursor);     --關閉游標 

exception   

when others then

dbms_sql.close_cursor(v_cursor);  --關閉游標 

raise;   

end;  

使用dbms_sql包執行dml語句

create

orreplace

procedure proc_dbms_sql_update   

(   

id number,   

name varchar2   

)asv_cursor number;            --定義游標 

v_string varchar2(200);   --字串變數 

v_row number;               --行數 

begin

v_cursor:=dbms_sql.open_cursor;    --為處理開啟游標 

v_string:=』update dinya_test2 a set a.name=:p_name where a.id=:p_id』;   

dbms_sql.parse(v_cursor,v_string,dbms_sql.native);   --分析語句 

dbms_sql.bind_variable(v_cursor,』:p_name』,name);     --繫結變數 

dbms_sql.bind_variable(v_cursor,』:p_id』,id);          --繫結變數 

v_row:=dbms_sql.execute(v_cursor);           --執行動態sql 

dbms_sql.close_cursor(v_cursor);                        --關閉游標 

exception   

when others then

dbms_sql.close_cursor(v_cursor);                --關閉游標 

raise;   

end;   

空資料行

select /*null a  

,null b  

,null c  

,null d  

,*/  

row_number() over(partition by 1 order

by 1)  

from dual  

where &r_no > 0  

connect

by rownum <= &r_no; 

PL SQL學習筆記

1 啟動sqlplus crtl r sqlplus 啟動sqlplus 輸入使用者名稱密碼登陸oracle 輸出hello world!ps sql set serveroutput on 這句不寫的話不會有結果輸出 sql begin 2 dbms output.put line hello w...

plsql 學習筆記1

在plsql中寫儲存過程時,需要寫 要執行的sql語句,在這個語句中變數應該這樣 變數 成為變數的值。如果變數需要加 那麼就得 變數 如果變數上加兩個 就是這樣 變數 那麼就變成 變數的名字,而不是變數的值。不是變數的量,如果需要加 那麼這樣,yyyy mm dd 一 是 關於plsql中寫在sql...

oracle學習筆記 PL SQL

pl sql 它是一種過程化語言,在pl sql中可以使用if語句或是log語句,以實現控制程式的執行流程,甚至可以定義變數,以至在語句之間傳遞資料資訊,這樣pl sql語言就能夠實現操控程式處理的細節,因此使用pl sql語句可以實現比較複雜的業務邏輯,它是oracle的專用語言,它是對標準sql...