您的位置:首页 > 数据库

PL/SQL学习笔记

2014-02-26 10:03 274 查看
from http://blog.csdn.net/leeyon4151/article/details/6616579


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' using v_1,v2;

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 常用表

--通过集成器名称获取interface_code
SELECT * FROM BNE_INTEGRATORS_TL WHERE USER_NAME = 'CUX2_主设备数据导入5';

--Excel中显示的栏位标题。可以直接Update,后更新Layout即可生效。
SELECT * FROM BNE_INTERFACE_COLS_TL T WHERE T.INTERFACE_CODE = 'GENERAL_444_INTF';

--Execl中每个栏位属性(包含LOV参数)。可以直接Update,后更新Layout即可生效。
SELECT * FROM BNE_INTERFACE_COLS_B WHERE INTERFACE_CODE = 'GENERAL_444_INTF';

使用DBMS_SQL包执行DDL语句



create or replace procedure proc_dbms_sql
(
table_name in varchar2, --表名
field_name1 in varchar2, --字段名
datatype1 in varchar2, --字段类型
field_name2 in varchar2, --字段名
datatype2 in varchar2 --字段类型
)as
v_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 or replace procedure proc_dbms_sql_update
(
id number,
name varchar2
)as
v_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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: