Oracle动态SQL返回单条结果和结果集

文章作者 100test 发表时间 2007:06:26 12:38:52
来源 100Test.Com百考试题网


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.
/

src="/oracle/js/wxgg_oracle.js">

相关文章


Oracle动态SQL返回单条结果和结果集
oracle中对db的不同命名方式
快速掌握Oracle数据库游标的使用方法
如何连接Oracle及故障解决办法总结
与数据库无关的处理放到数据库以外来实现
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛