Oracle EBS - SQL&PL/SQL: 动态SQL和动态游标
2013-03-18 20:46
609 查看
动态SQL
/*SELECT msi.inventory_item_id, msi.segment1 FROM mtl_system_items_b msi WHERE msi.organization_id = 142 AND msi.inventory_item_id = 26505;*/ DECLARE p_organization_id NUMBER := 142; p_inventory_item_id NUMBER := 26505; l_item_number VARCHAR2(240); BEGIN EXECUTE IMMEDIATE 'select segment1 from mtl_system_items_b msi where msi.organization_id = :1 and msi.inventory_item_id = :2' INTO l_item_number USING p_organization_id, p_inventory_item_id; dbms_output.put_line('l_item_number :' || l_item_number); EXCEPTION WHEN OTHERS THEN dbms_output.put_line(dbms_utility.format_error_backtrace); dbms_output.put_line(dbms_utility.format_error_stack); dbms_output.put_line('no data found'); END;
动态游标
可在游标字符串里拼接指定定字符串,或者通过”:“指定这是一个被拼接的 字符串,最后在打开游标是使用using把确定的字符串拼接进去。
FUNCTION get_old_character_value(l_plan_id IN NUMBER, l_organization IN NUMBER, l_wip_entity_id IN NUMBER, l_char_name IN VARCHAR2) RETURN VARCHAR2 IS TYPE result_cur_type IS REF CURSOR; result_cur result_cur_type; l_sql VARCHAR2(500); l_character_number VARCHAR2(20); l_character_value VARCHAR2(4000); BEGIN l_character_number := get_character_number(l_plan_id, l_char_name); l_sql := 'SELECT DISTINCT qr.' || l_character_number || ' FROM qa_results qr WHERE qr.plan_id = :1 AND qr.organization_id = :2 AND qr.wip_entity_id = :3'; --log(l_sql); OPEN result_cur FOR l_sql USING l_plan_id, l_organization, l_wip_entity_id; FETCH result_cur INTO l_character_value; CLOSE result_cur; RETURN l_character_value; END;
相关文章推荐
- Oracle EBS - SQL&PL/SQL: 笔记1
- Oracle EBS - SQL&PL/SQL: 笔记3
- Oracle EBS - SQL&PL/SQL: 查询Profile设置,具体到Site、App、Resp、User
- Oracle EBS - SQL&PL/SQL: 根据request id找trace文件
- Oracle - EBS: SQL&PL/SQL 如何根据flag参数决定是否按照某些字段group分组
- oracle pl/sql 入门+ 数组使用+游标+动态SQL
- 在Oracle PL/SQL中游标声明中表名动态变化的方法
- Win7 x64 PL/SQL 连接 Oralce 提示 Could not initialize "%ORACLE_HOME%\bin\oci.dll"
- 利用oracle的动态PL/SQL对简单表达式求值
- Oracle PL/SQL 程序设计读书笔记 - 第16章 动态SQL和动态PL/SQL
- Oracle PL/SQL过程与函数hell…
- ORACLE PL/SQL & SQL SERVER T-SQL
- oracle pl/sql 动态SQL
- Oracle常用FAQ(SQL&PL/SQL)(转)
- Oracle PL/SQL使用动态SQL
- PL/SQL --> 动态SQL
- Oracle(十一)PL/SQL 存储函数 & 存储过程
- Oracle 11g Release 1 (11.1) PL/SQL_了解静态和动态 SQL
- Win7 x64 PL/SQL 连接 Oralce 提示 Could not initialize "%ORACLE_HOME%\bin\oci.dll"
- ORACLE之常用FAQ V1.0 (SQL&PL/SQL)