位置: 编程技术 - 正文

批处理 动态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使用的是什么逻辑模型)

  • 利润表的所得税费用怎么填
  • 股票交易费用计算器
  • 民办非企业业务主管单位职责
  • 从租计征的房产税纳税期限
  • 非同一控制下企业合并对价小于可辨认
  • 保费 车船税
  • 企业收到个体户开的发票
  • 国外客户手续费差异账务处理如何做?
  • 个人合伙企业有没有企业所得税
  • 营改增后商品房销售合同印花税的计税依据是什么?
  • 小规模纳税人附加税减免政策2023
  • 地税印花税怎么算
  • 电子发票是专用发票吗
  • 劳务派遣企业的规上企业认定标准
  • 出租车发票有出租车信息吗
  • 销售坚果税率多少
  • 纳税申报有哪些规定
  • 退税可以分批吗
  • 小企业财务报表模板免费下载
  • 低值易耗品属于资产类
  • 一般纳税人汇算清缴操作流程
  • 理财认购申购
  • 多结转成本的会计分录
  • 结转成本的会计分录摘要怎么写
  • 把试驾车当新车卖,构成欺诈
  • 手机cpu性能天梯图排行榜
  • msoobe.exe是什么
  • 病假工资是工资吗
  • php tokenizer
  • 超支福利费按什么计提
  • oracle win10
  • 2021发票勾选认证
  • 银行存放同业的钱安全吗
  • 支付工资属于费用吗
  • 房产自用或出租什么意思
  • 物流辅助服务包括货物运输吗
  • opencv识别车牌
  • torchaudio教程
  • echarts中国地图代码
  • 利用Linux Find命令查找文件方法记录 快速查找文件位置
  • php如何post
  • 补缴以前年度企业所得税如何做账
  • 预收账款属于什么科目
  • 小规模纳税人可以开增值税专用发票吗
  • 其他收益放在哪里
  • 金蝶软件怎么录入发票号
  • 科研项目财政拨款怎么算
  • 社保是当月计提当月交吗
  • mysql查询某个字段重复数据
  • 中小企业财务核算的重要性
  • 盈余公积的提取条件
  • 房地产企业代收费用
  • 购进固定资产没有发票怎么入账
  • 境外所得税税收抵免操作指南
  • 股权转让的会计处理怎么做
  • 购入不需要安装的固定资产会计科目
  • 预期收益率怎么用市场预期收益率算
  • 出口报关金额怎么算
  • 增值税政策依据
  • 扣发当月工资是什么意思
  • 连锁药店之间调拨药品
  • 原始凭证填制的基本内容
  • xp系统如何开启共享文件夹
  • ubuntu 16.04.6安装教程
  • 联想笔记本bios设置启动顺序
  • centos安装scala
  • xmpdisabled什么意思
  • ubuntu on xorg
  • win7资源管理器不停的崩溃重启
  • jquery的css样式
  • jquery操作元素的方法
  • 苹果多点触控
  • 简单阐述javascript的主要作用
  • threejs入门教程
  • python支持中文字符
  • jquery实现轮播图步骤
  • jQuery中each()、find()和filter()等节点操作方法详解(推荐)
  • 现在企业可以享受低保吗
  • 新疆哪个城市最有发展前景
  • 利润表中所得税费用包括
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设