ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:16.87KB ,
资源ID:10152136      下载积分:8 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/10152136.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(PLSQL开发中动态SQL的使用方法..docx)为本站上传会员【精***】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

PLSQL开发中动态SQL的使用方法..docx

1、但是DDL语句及系统控制语句却不能在PL/SQL中直接使用,要想实现在 PL/SQL中使用DDL语句及系统控制语句,可以通过使用动态SQL来实现。 首先我们应该了解什么是动态SQL,在Oracle数据库开发PL/SQL块中我们使用的SQL分为:静态SQL语句和动态SQL语句。所谓静态SQL指在PL/SQL块中使用的SQL语句在编译时是明确的,执行的是确定对象。而动态SQL是指在PL/SQL块编译时SQL语句是不确定的,如根据用户输入的参数的不同而执行不同的操作。编译程序对动态语句部分不进行处理,只是在程序运行时动态地创建语 句、对语句进行语法分析并执行该语句。 Oracle中动态SQL可

2、以通过本地动态SQL来执行,也可以通过DBMS_SQL 包 来执行。下面就这两种情况分别进行说明: 一、本地动态SQL 本地动态SQL是使用EXECUTE IMMEDIATE语句来实现的。 1、本地动态SQL执行DDL语句: 需求:根据用户输入的表名及字段名等参数动态建表。 create or replace procedure proc_test ( table_ name in varchar2表名 field1 in varchar 字段名 datatype] in varchar2字段类型 field2 in varchar字段名 datatype2 in var

3、char2字-段 类型 as str_sql varchar2 (5; begi n str_sql:= create table' ||table_name|' ( ||field¥||' ||datatype1'| , ' ||fieldZ||' ||data execute immediate str_sql动态执行 DDL 语句 excepti on when others the n null; end ; 以上是编译通过的存储过程代码。下面执行存储过程动态建表。 SQ L> execute proc_test( dinya_test' , ' id' , '

4、 number(8 not null' , ' name , ' varchar2(1 '; PL/SQL procedure successfully completed SQL> desc diny a_test; Name Type Nullable Default Comme nts ID NUMBER(8 NAME VARCHAR2(1 Y SQL> 至U这里,就实现了我们的需求,使用本地动态SQL根据用户输入的表名及字段名、字段类型等参数来实现动态执行DDL语句。 2、本地动态SQL执行DML语句。 需求:将用户输入的值插入到上例中建好的diny a_tes表中

5、 create or replace procedure proc_i nsert ( id in nu mber,输入序号 n ame in varchar2 输入姓名 as str_sql varchar2 (5; begi n str_sql:= ' insert into dinya_test values(:1,:2 execute immediate str_sql using id,nan动;态执行插入操作 excepti on when others the n null; end ; 执行存储过程,插入数据到测试表中 SQL> execute p

6、roc_insert(1' dinya'; PL/SQL procedure successfully completed SQL> select * from diny a_test; ID NAME 1 dinya 在上例中,本地动态SQL执行DML语句时使用了 using子句,按顺序将输入的值绑定到变量,如果需要输出参数,可以在执行动态SQL的时候,使用RETURNING INTO 子句,如: declare p_id nu mber:=1; v_co unt nu mber; begi n v_string:= select count(* from table_n

7、ame a where a.id=:id'; execute immediate v_stri ng into v_co unt using p_id; end ; 更多的关于动态SQL中关于返回值及为输出输入绑定变量执行参数模式的问题,请读者自行做测试。 、使用DBMS SQL 包 使用DBMS_SQL 包实现动态SQL的步骤如下:A、先将要执行的SQL语句或一个语句块放 到一个字符串变量中。B、使用DBMS_SQL 包的parse过程来分析该 字符串。C、使用DBMS_SQL 包的bind_variabl过程来绑定变量。D、使用DBMS_SQL 包的execute函数来执行语

8、句。 1、使用DBMS_SQL 包执行DDL语句 需求:使用DBMS_SQL包根据用户输入的表名、字段名及字段类型建表。 create or replace procedure proc_dbms_sql ( table_ name in varchar2表名 field- name1 in varchar2字 -段名 datatypel in varchar2字段类型 field- name2 in varchar2^,-段名 datatype2 in varchar2字段类型 as v_cursor nu mber; 定义光标 v-string varchar2(2

9、0(定义字符串变量 v_row nu mber;-行数 begi nv_cursor:=dbms_sql.ope n_cursor为 处理打开光标 v_stri ng: = create table' ||table_name|' C ||field_name11'|' lldatatypel'| ,' ||field_name2|| dbms_sql.parse(v_cursor,v_stri ng,dbms_sql. nat分vfe 语句 v_row:=dbms_sql.execute(v_cursor;- 执行语句 dbms_sql.close_cursor(v_curso

10、 关闭光标 excepti on when others the n dbms_sql.close_cursor(v_curso 关 闭光标 raise; end; 以上过程编译通过后,执行过程创建表结构: SQL> execute proc_dbms_sql( ' dinya_test2' , ' id' , ' number(8 not null' , ' name , ' varchar2(1'; PL/SQL procedure successfully completed SQL> desc diny a_test2; Name Type Nullable De

11、fault Comme nts ID NUMBER(8 NAME VARCHAR2(1 Y SQL> 2、使用DBMS_SQL 包执行DML语句 需求:使用DBMS_SQL包根据用户输入的值更新表中相对应的记录。查看表中已有记录: SQL> select * from din ya_test2; ID NAME 1 Oracle 2 CSDN 3 ERP SQL> 建存储过程,并编译通过: create or replace procedure proc_dbms_sql_update ( id nu mber, n ame varchar2 asv_curs

12、or nu mber ;定义光标 v_string varchar2(20O字-符串变量v_row nu mber;-行数 begi n v_cursor:=dbms_sql.ope n_curso为 处理打开光标 v_string:= update dinya_test2 a set a.name=:p_name where a.id=:p_id dbms_sql.parse(v_cursor,v_stri ng,dbms_sql. nat分析语句 dbms_sql.bind_variable(v_cursor,':p_name 绑定变 mb; dbms_sql.bind_varia

13、ble(v_cursor,'--绑定变量 d; v_row:=dbms_sql.execute(v_cursor ;执行动态 S QL dbms_sql.close_cursor(v_curso 关闭光标excepti on when others the n dbms_sql.close_cursor(v_curso 关 闭光标 raise; end; 执行过程,根据用户输入的参数更新表中的数据: SQL> execute proc_dbms_sql_update(2, ' csdn_dinya '; PL/SQL procedure successfully complet

14、ed SQL> select * from din ya_test2; ID NAME 1 Oracle 2 csd n_dinya 3 ERP SQL> 执行过程后将第二条的name字段的数据更新为新值csdn_di nya。这样就完成了使用dbms_sql包来执行DML语句的功能。 使用DBMS_SQL中,如果要执行的动态语句不是查询语句,使用 DBMS_SQL.Execute 或DBMS_SQL.Variable_Value 来执行,如果要执行动态语句是 查询语句,则要使用DBMS_SQL.define_column 定义输出变量,然后使用 DBMS_SQL.Exec

15、ute, DBMS_SQL.Fetch_Rows, DBMS_SQL.Colum n_Value及 DBMS_SQL.Variable_Value 来执行查询并得到结果。总结说明:在Oracle开发过 程中,我们可以使用动态SQL来执行DDL语句、DML语句、事务控制语句及系统控制语句。但是需要注意的是,PL/SQL块中使用动态SQL执行DDL语句的时候与别的不同,在DDL中使用绑定变量是非法的 (bind_variable(v_cursor, ' :p_name ' , a 分析后不需要执行 DBMS_SQL.Bind_Variable ,直接将输入的变量加到字符串中即可。另外,DDL是 在调用DBMS_SQL.PARSE时执行的,所以DBMS_SQL.EXECUTE 也可以不 用,即在上例中的 v_row:=dbms_sql.execute(v_cursor 部分可以不要。

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服