Oracle动态SQL返回单条结果和结果集Oracle认证考试

文章作者 100test 发表时间 2009:10:22 23:17:36
来源 100Test.Com百考试题网


"mkhgigh"> 1. DDL 和 DML
/**//*** DDL ***/
begin
EXECUTE IMMEDIATE 0drop table temp_1.
EXECUTE IMMEDIATE create table temp_1(name varchar2(8)).
end.

/**//*** DML ***/
declare
v_1
varchar2(8).
v_2
varchar2(10).
str varchar2(50).
begin
v_1:
=测试人员.
v_2:
=北京.
str := INSERT INTO test (name ,address) VALUES (:1, :2).
EXECUTE IMMEDIATE str USING v_1, v_2.
commit.
end.

2. 返回单条结果 declare
str varchar2(500).
c_1
varchar2(10).
r_1 test
%rowtype.
begin
c_1:
=测试人员.
str:=0select * from test where name=:c WHERE ROWNUM=1.
execute immediate str into r_1 using c_1.
DBMS_OUTPUT.PUT_LINE(R_1.NAME
||R_1.ADDRESS).
end .

3. 返回结果集 CREATE OR REPLACE package pkg_test as
/**//* 定义ref cursor类型
不加return类型,为弱类型,允许动态sql查询,
否则为强类型,无法使用动态sql查询.
*/

type myrctype
is ref cursor.

--函数申明
function get(intID number) return myrctype.
end pkg_test.
/

CREATE OR REPLACE package body pkg_test as
--函数体
function get(intID number) return myrctype is
rc myrctype.
--定义ref cursor变量
sqlstr varchar2(500).
begin
if intID=0 then
--静态测试,直接用0select语句直接返回结果
open rc for 0select id,name,sex,address,postcode,birthday from student.
else
--动态sql赋值,用:w_id来申明该变量从外部获得
sqlstr := 0select id,name,sex,address,postcode,birthday from student where id=:w_id.
--动态测试,用sqlstr字符串返回结果,用using关键词传递参数
open rc for sqlstr using intid.
end if.

return rc.
end get.

end pkg_test.
/

相关文章


ORACLE主要的系统表和数据字典视图Oracle认证考试
Oracle启动服务详解以及手动控制Oracle认证考试
Oracle认证辅导:慎用Oracle的notinOracle认证考试
一个查询计划错误的原因分析Oracle认证考试
Oracle动态SQL返回单条结果和结果集Oracle认证考试
Oracle字符集乱码问题析及解决办法Oracle认证考试
Oracle9i数据库WITH查询语法小议Oracle认证考试
微软认证系统管理员考试介绍Oracle认证考试
RMAN基于时间点的不完全恢复Oracle认证考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛