位置: 编程技术 - 正文

批处理 动态sql(sqlserver批处理)

编辑:rootadmin
1. DECLARE TYPE ref_cursor_type IS ref CURSOR; v_mycursor ref_cursor_type; TYPE id_list IS TABLE OF integer; TYPE name_list IS TABLE OF varchar2(); v_tabid id_list:=id_list(); v_tabname name_list:=name_list(); sql_str varchar2(); BEGIN --查询所以行,放在集合里 sql_str:='select empno,ename from emp'; sql_str:=sql_str||' order by empno desc'; execute immediate sql_str BULK COLLECT INTO v_tabid,v_tabname; FOR c IN v_tabid.first..v_tabid.last LOOP dbms_output.put_line('empno为'||v_tabid(c)||' 记录的NAME为'||v_tabname(c)); END LOOP; dbms_output.put_line('---------------------------------'); --更新(返回更新后的值) sql_str:='update emp set empno=1+empno,ename=''a'' where rownum=1 RETURNING empno,ename into :1,:2 '; execute immediate sql_str RETURNING BULK COLLECT INTO v_tabid, v_tabname; FOR c IN v_tabid.first..v_tabid.last LOOP dbms_output.put_line('empno为'||v_tabid(c)||' 记录的NAME为'||v_tabname(c)); END LOOP; dbms_output.put_line('---------------------------------'); --删除(返回被删除的行) sql_str:='delete from emp where rownum<=2 RETURNING empno,ename into :1,:2 '; execute immediate sql_str RETURNING BULK COLLECT INTO v_tabid, v_tabname; FOR c IN v_tabid.first..v_tabid.last LOOP dbms_output.put_line('empno为'||v_tabid(c)||' 记录的NAME为'||v_tabname(c)); END LOOP; dbms_output.put_line('---------------------------------'); --插入(返回插入的行) sql_str:='insert into emp(empno,ename) values(1,''abc'') RETURNING empno,ename into :1,:2 '; execute immediate sql_str RETURNING BULK COLLECT INTO v_tabid, v_tabname; FOR c IN v_tabid.first..v_tabid.last LOOP dbms_output.put_line('empno为'||v_tabid(c)||' 记录的NAME为'||v_tabname(c)); END LOOP; dbms_output.put_line('---------------------------------'); /* 批fetch 语法: fetch dynamic_cursor bulk collect into define_variable[,define_variable...] */ sql_str:='select empno,ename from emp'; sql_str:=sql_str||' order by empno desc'; OPEN v_mycursor FOR sql_str; --取 FETCH v_mycursor BULK COLLECT INTO v_tabid,v_tabname; --关 CLOSE v_mycursor; --输 FOR c IN v_tabid.first..v_tabid.last LOOP dbms_output.put_line('empno为'||v_tabid(c)||' 记录的NAME为'||v_tabname(c)); END LOOP; dbms_output.put_line('---------------------------------'); END; 2.------- forall DECLARE /*批forall 语法:动态字符串必须为insert/update/delete,不能为select forall index in lower..upper execute immediate dynamic_string using bind |bind(index)[,bind |bind(index)...] [{returning|return} bulk collect into bind_argument[,bind_argument...]]; */ TYPE sal_list IS TABLE OF number(8,2); TYPE name_list IS TABLE OF varchar2(); TYPE dept_list IS VARRAY() OF integer; v_depts dept_list:=dept_list(,,,,,,,); v_tabsal sal_list:=sal_list(); v_tabname name_list:=name_list(); sql_str varchar2(); BEGIN sql_str:='update emp set sal=sal*:arg1 where DEPTNO=:arg2'; sql_str:=sql_str||' returning ename,sal into :arg3,:arg4'; --给前面4个部门加薪%,并返回结果到集合. FORALL j IN 1..4 execute immediate sql_str using 1.,v_depts(j) RETURNING BULK COLLECT INTO v_tabname,v_tabsal; --显示结果 FOR j IN v_tabname.first..v_tabname.last LOOP dbms_output.put_line('雇员'||v_tabname(j) ||' 的薪水被提到'||v_tabsal(j)); END LOOP; dbms_output.put_line('---------------------------------'); --给后面4个部门加薪%,并返回结果到集合. FORALL j IN 5..8 execute immediate sql_str using 1.,v_depts(j) RETURNING BULK COLLECT INTO v_tabname,v_tabsal; --显示结果(用notfound判断是否有结果集) IF SQL%NOTFOUND THEN dbms_output.put_line('无数据更新'); ELSE FOR j IN v_tabname.first..v_tabname.last LOOP dbms_output.put_line('雇员'||v_tabname(j) ||' 的薪水被提到'||v_tabsal(j)); END LOOP; END IF; END; 3.用一个值绑定绑定名称相同的值. 把sql语句用begin end括起来就能实现 如: execute immediate 'begin calc_stats(:x,:x,:y,:x,:y); end;' using a,b; 将A与X绑定,当第二次出来不同名称时,与B绑定,以此类推

推荐整理分享批处理 动态sql(sqlserver批处理),希望有所帮助,仅作参考,欢迎阅读内容。

批处理 动态sql(sqlserver批处理)

文章相关热门搜索词:批处理执行sql文件,批量执行sql脚本,sqlplus批处理命令,sqlserver批处理,批处理执行sql文件,批处理执行sql脚本,sqlplus批处理命令,批处理执行sql,内容如对您有帮助,希望把文章链接给更多的朋友!

SQL Server 的逻辑查询处理步骤 最近我则刚刚收到了微软最有价值专家项目组寄来的该书的SQLServer英文版本-《InsideMicrosoftSQLServer:T-SQLQuerying》(

在sp_executesql中使用like字句的方法 declare@LikeSqlnvarchar();--定义一个like变量,如果是存储过程,此处可以存储过程的参数set@LikeSql=‘someword%';--把LikeSql变量赋值,可以赋值成'%xxxxxxxxxxxx%'decl

SQL 合并多行记录的方法总汇 SQL中合并多行记录的方法总汇:--1.创建表,添加测试数据CREATETABLEtb(idint,[value]varchar())INSERTtbSELECT1,'aa'UNIONALLSELECT1,'bb'UNIONALLSELECT2,'aaa'UNIONALLSELECT2,'bbb'UNION

标签: sqlserver批处理

本文链接地址:https://www.jiuchutong.com/biancheng/349099.html 转载请保留说明!

上一篇:SQL 合并多行记录的方法总汇(sql合并多条记录某一个字段)

下一篇:SQL Server 2008的逻辑查询处理步骤(sql server使用的是什么逻辑模型)

  • 免交增值税怎么账务处理
  • 税务机关的义务是依法征管
  • 一般纳税人条件要求2020
  • 开票可以只开大数据吗
  • 劳务派遣公司必须设立股东
  • 其他应付款属于哪类
  • 长期应付款是什么科目 借方
  • 增值税专用发票几个点
  • 民非组织捐赠收入免税
  • 土地使用权出让金多少钱一平米
  • 个体户雇佣临时工
  • 原材料计划成本和实际成本的区别
  • 企业所得税汇算清缴补缴税款分录
  • 中小微企业优惠政策落实措施
  • 逆流交易固定资产折旧实现,为什么按差额
  • 个人投资理财需要注意什么
  • 以前年度亏损可以在季报弥补吗
  • 企业拆迁补偿款会计分录
  • 税收分类编码风险评估
  • 中意装饰工程有限公司怎么样
  • 未分配利润怎么填
  • 出租车库收入是否需要计算缴纳土地增值税
  • 以前年度损益调整编码
  • 采用视同买断方式代销商品怎么记账?
  • 发工资时忘记扣个税了怎么做账
  • 管理费用没发票能入账吗
  • 收到服务费发票怎么做账
  • 高新技术企业改革
  • 替换重置的设备更新应考虑
  • 上海个人所得税计算器
  • 销售二手车减免税额会计分录
  • php自动下载文件到本地
  • 三方债权债务抵消如何开发票
  • 股权转让怎么交印花税2019年最新
  • 固定资产维修费计入固定资产吗
  • 公司借款利息可以用对公户转账吗
  • 公司购买食品属于什么费用
  • java后端代码例子
  • midjourney 初级使用说明
  • 汇兑损益计算方法有哪些
  • 公司的内账
  • c语言中有哪些循环结构
  • 员工探亲证明怎么写
  • 固定资产清理借方增加还是减少
  • 网上税则
  • mongo 更新数据
  • 股东投资款超过实收资本怎么处理
  • 六税两费减半征收政策2023
  • 利润分配未分配利润期末有余额吗
  • 企业生产经营发展
  • 开具信用证的费用能开专票吗
  • 贷款损失准备核销
  • 如何理解会计的本质
  • 收到银行本票计入什么科目
  • 全资子公司并入母公司
  • 公益性捐赠全额扣除,企业所得税
  • 为什么留存收益不考虑筹资费用
  • 商品储存的基本要求是什么?
  • 企业有外币账户怎样做账
  • mysql数据库开发技术
  • mysql数据库的基本原理
  • 怎样用windows
  • 系统停止工作
  • win1020h2版本要更新吗
  • win7系统如何关闭开机自动启动软件
  • 在linux中使用什么命令可以执行shell脚本
  • androidtime
  • git 常用指令
  • 常用的批处理命令
  • cocos2d安装教程
  • android编译环境搭建
  • 显示某两个字符的函数
  • jquery给元素添加属性值
  • jquery的核心函数
  • html应用css
  • 厂房出租开增值税专用发票
  • 1000元钱0.05%的利息是多少
  • 广东广州税务局电话
  • 昱铭这个公司名字怎么样
  • 卖钢材交哪些税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设