位置: 编程技术 - 正文

批处理 动态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年
  • 发票没有银行账号可以收不
  • 自产的产品
  • 公益性捐赠税前扣除资格认定
  • 包装物押金会计分录怎么做
  • 建筑清包工的账务处理
  • 现金流量表公式大全
  • 库存现金日记账和库存现金总账都应逐日逐笔
  • 会计人士教你在Excel中如何计算年均增长率
  • 补交增值税怎么处理
  • 开发商土地使用税如何计算
  • 在建工程转固后又发生成本
  • 取得特许权使用费收入增值税税率
  • 注册资本需要
  • 个人境外收入如何开发票
  • 印花税是发票吗
  • 销项已开进项还没有收到分录如何处理?
  • 自己公司开发票有什么好处
  • 个人承包工程如何缴纳个人所得税
  • 增值税5%的税率怎么算
  • 银行手续费回单可以作为报销
  • 土地租赁摊销年限按合同年限
  • win11无法打开英雄联盟
  • 腾讯电脑管家网络修复
  • 退回多缴税款如何做账
  • 年底返利账务处理
  • 货没到申请退款玩付邮费吗
  • compaq-rba.exe是哪个方面的进程 作用是什么 compaq-rba进程查询
  • 支付广告费会计怎么做账
  • 期间损益包括
  • linux多网卡聚合
  • 免税企业所得税的有
  • 支付工资属于费用吗
  • 购买免税农产品可以抵扣进项税
  • 股权变更怎么缴纳个人所得税
  • 莫尼莫克房车
  • vue中的组件有几类
  • servlet工作原理和生命周期
  • 未取得专用发票详细原因怎么写
  • windowsserver2008r2密码重置
  • idea可以编写vue吗
  • 未记账凭证怎么变成已记账凭证
  • phpweb漏洞
  • 增值税返还需要交增值税吗
  • 存货的账务处理分录
  • 帝国cms专题
  • 织梦采集器图片本地化
  • Philtron: a PHP Proxy for HTTP
  • 公司报销金额有限制吗
  • 工会经费和残保金属于税费吗
  • 合理损耗如何计算单位成本
  • 子公司自购买日开始持续计算的可辨认净资产的公允价值
  • 进项发票认证后暂不抵扣
  • 汇算清缴所得税的账务处理会计分录
  • 材料的什么加上什么构成了材料的实际采购成本
  • 公司挂靠有资质的企业公司会计处理?
  • 营业执照可以注册几个抖音号
  • 查看linux系统版本信息
  • bios如何设置
  • dwrg_repair.exe什么意思
  • linux GTK、KDE、Gnome、XWindows 图形界面区别介绍
  • linux下4种kill某个用户所有进程的方法
  • win10 rs3
  • 怎么快速
  • js移动到指定位置
  • css常用布局方式
  • android内存分析显示
  • shell 字符串trim
  • android camera1
  • js中refresh
  • jQuery EasyUI Tab 选项卡问题小结
  • 刮刮奖软件下载
  • 企业代理申报还用自己申报吗
  • 咸阳高新区税务局地址
  • 1992年2月20号是什么
  • 卷票发票丢失怎么办理
  • 上海市浦东新区人民医院
  • 西安市地方税务局高新技术产业开发区分局
  • 经济增长的术语
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设