视窗
loading...
您现在的位置:首页 > IT认证 > oracle认证 >

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


1. DDL 和 DML

/*** DDL ***/
begin
EXECUTE IMMEDIATE 'drop 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:='select * 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

--静态测试,直接用select语句直接返回结果

open rc for select id,name,sex,address,postcode,birthday from student;
else

--动态sql赋值,用:w_id来申明该变量从外部获得

sqlstr := 'select 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;
/

閵嗏偓

閵嗏偓

閵嗘劕鍘ょ拹锝咃紣閺勫骸鎷伴悧鍫熸綀鐠囧瓨妲戦妴锟�
閺堫剛鐝柈銊ュ瀻娣団剝浼呴弶銉︾爱娴滃簼绨伴懕鏃傜秹閿涳拷鐎电娴嗘潪鐣屾畱娣団剝浼呴幋鎴滄粦閸旀稒鐪伴弽鍥ㄦ娣団剝浼呴惃鍕毉婢跺嫸绱�閹存垳婊戠亸濠囧櫢娴f粏鈧懐娈戦悧鍫熸綀閽佹ぞ缍旈弶鍐跨礉鐎佃鍨滄禒顒冩祮鏉炵晫娈戞穱鈩冧紖婵″倹婀佸鍌濐唴閹存牗婀佹笟鍨綀閹存牞绻氬▔鏇氫繆閹垵顕崣濠冩閼辨梻閮撮幋鎴滄粦閿涘本婀扮粩娆庣窗缁斿宓嗛崚鐘绘珟閿涳拷鐎电懓甯崚娑樺敶鐎硅鍨滄禒顒佸姽閹板繑鏁禒姗€鈧倸缍嬮惃鍕归柊顒婄礉閼辨梻閮撮弬鐟扮础閿涙岸鍋栨禒锟�:webmaster@jscj.com閵嗏偓閻絻鐦介敍锟�4008816886

相关文章

无相关信息
更新时间2022-09-16 09:56:15【至顶部↑】
联系我们 | 邮件: webmaster@jscj.com | 客服热线电话:4008816886(QQ同号) |  濞h濮炵€广垺婀囧顔讳繆

付款方式留言簿投诉中心网站纠错二维码手机版

电话:
付款方式   |   给我留言   |   我要纠错   |   联系我们