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;
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;
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;
相关文章推荐
- SQLServer 2008以上误操作数据库恢复方法——日志尾部备份
- sql server 数据库修复,mdf 损坏 修复 直接从物理文件 抽取数据 生成新的数据库
- #HY000The user specified as a definer ('root'@'%') does not exist
- SQLServer建立架构(模式/目录)_建立表_建立视图
- oracle 常用命令
- 未能加载文件或程序集“SQLDAL”或它的某一个依赖项。系统找不到指定的文件
- 非常不错的SQL注入绕过paper,值得收藏.
- mysq:lERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
- SQL Server 迁移数据到MySQL
- Mysql 存储过程和函数区别
- sql2005 执行安装向导期间出错
- oracle安装之后,plsql如何连数据库
- SQL语句执行顺序及建议
- MySQL必知必会之10-14
- pl/sql登不上,弹出空白对话框
- Oracle RAC系列之:利用srvctl管理RAC数据库
- mysql命令行操作
- redis使用--1(String)
- AIX6.1 安装 oracle 11204 札记
- ORM和Hibernate---5.1.1: 对象/关系数据库映射(ORM)