- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
?
?
Oracle动态SQL之本地动态SQL的使用
?
?
论文导读:本地动态SQL在处理SQL语句时将其分为两类:一类是DDL语句、DCL语句、非查询的DML语句、单行查询的SELECT语句,这一类可使用EXECUTEIMMEIDIATE语句执行。
关键词:Oracle,数据库,PL/SQL开发动态SQL,本地动态SQL
?
引言
本地动态SQL在处理SQL语句时将其分为两类:一类是DDL语句、DCL语句、非查询的DML语句、单行查询的SELECT语句,这一类可使用EXECUTEIMMEIDIATE语句执行。第二类是多行查询的SELECT语句,这类语句需要通过游标来实现。
1、使用EXECUTEIMMEDIATE处理DDL、DCL、非多行查询的DML语句等动态SQL
使用EXECUTEIMMEDIATE来执行动态SQL是非常简单的,只需将要执行的动态SQL放到EXECUTEIMMEDIATE命令后即可。如下例:
declare
v_sqlvarchar2(1000);
begin
v_sql:=createtabletab_test(||namevarchar2(80)notnull,||
addrvarchar2(200),||birthdaydate);--DDL语句
executeimmediatev_sql;
v_sql:=grantselectontab_testtopublic;--DCL语句
executeimmediatev_sql;
v_sql:=insertintotab_test(name,addr)values(test1,test1addr);--DML语句
executeimmediatev_sql;
exceptionwhenothersthen
dbms_output.put_line(出现错误:||sqlerrm);
end;
执行完这段代码后,用SELECT查询一下新建的tab_test表结构及表中数据,结果如下:
SQLselect*fromtab_test;
NAMEADDRBIRTHDAY
test1test1addr
在这个例子中分别将三个简单的SQL语句赋值给一个字符串变量,然后通过EXECUTEIMMEDIATE命令来执行这个字符串中包含的SQL语句。
在实际的使用中,所使用到的DML语句往往不会如此简单,可能会包含入参、返回值等,这种情况就需要通过EXECUTEIMMEDIATE增加相应的子句来完成处理。完整的EXECUTEIMMEDIATE语句的格式如下:
EXECUTEIMMEDIATEsql_statement
[INTO{variable[,variable...]|record}]
[USING[IN|OUT|INOUT]bind_argument
[,[IN|OUT|INOUT]bind_argument...]]
[{RETURNING|RETURN}INTObind_argument[,bind_argument]...];
在这个完整的EXECUTEIMMEDIATE语句中,INTO子句表示在执行单行查询时将查询结果保存到指定的变量variable中;USING子句表示在执行的SQL语句中含有参数时使用bind_argument来替换参数;RETURNINGINTO子句表示在执行包含RETURNING子句的非查询DML语句时将返回值保存到bind_argument中。
下面通过几个例子来分别说明这几个子句的用法,首先看一个单行查询的例子。
declare
v_emp_tableemp%rowtype;
v_sqlvarchar2(1000);
begin
v_sql:=select*fromempwhereempno=:v_empno;
executeimmediatev_sqlintov_emp_tableusing7369;
dbms_output.put_line(emp_name=||v_emp_table.ename);
exceptionwhenothersthen
dbms_output.put_line(出现错误:||sqlerrm);
end;
在这个例子中使用了INTO子句和USING子句。INTO子句将查询的结果保存到变量v_emp_table中,同时在USING子句中用值7369替换SQL中的参数v_empno。需要注意的是,EXECUTEIMMEDIATE…INTO…只能用于返回单行结果的SELECT语句,如果查询结果有多行,必须使用游标的FETCH语句。
再看一个
您可能关注的文档
- 党中勤教授治疗胆囊息肉的临床经验-中医药疗法.docx
- 新形势下网络技术在电力信息通信中的应用.docx
- 一带一路沿线主要地区高速铁路机车动力系统专利竞争情报研究.docx
- 国际工程承包企业物流体系建设研究.docx
- 延续性护理对子宫切除术患者术后性生活质量及心理状态的影响1.docx
- 关于机电一体化设备故障诊断技术的研究.docx
- 求解带有利用率惩罚背包问题的参数自适应差分进化算法.docx
- 人性化护理在妇产科手术患者中的应用.docx
- 护士分层护理管理在护理管理中的应用体会.docx
- 中小型农业企业发展问题及解决措施.docx
- 中国国家标准 GB/T 22517.2-2024体育场地使用要求及检验方法 第2部分:游泳场地.pdf
- GB/T 22517.2-2024体育场地使用要求及检验方法 第2部分:游泳场地.pdf
- 《GB/T 22517.2-2024体育场地使用要求及检验方法 第2部分:游泳场地》.pdf
- 苏教版(2017秋)科学三年级下册1.《种子发芽了》 教案(含课堂练习和反思).docx
- 2024-2025学年小学数学六年级上册冀教版(2024)教学设计合集.docx
- 地理商务星球版七年级上册4.5形成气候的主要因素 同步教案.docx
- 2024-2025学年中职中职专业课金融类73 财经商贸大类教学设计合集.docx
- 2024-2025学年初中地理七年级上册(2024)仁爱科普版(2024)教学设计合集.docx
- 2024-2025学年小学英语二年级上册外研版(一起)教学设计合集.docx
- 2024-2025学年高中数学选择性必修 第二册北师大版(2019)教学设计合集.docx
文档评论(0)