Oracle 的存储过程里面的SQL 语句(|| “!”)看不懂,望大家给个答案

问题描述

create or replace package body pck_imp_puryewu is procedure searchList( i_FLDPURCONTRACTNO in varchar2, i_JK_DDH in varchar2, i_FLDCREATEDATE in varchar2, i_VERIFY in varchar2, i_userId in varchar2, o_retCode out varchar2, o_tableHead out varchar2, o_tablewidth out varchar2, o_resultRef out REF_SEARCH ) is v_sql varchar2(3000); begin o_retCode := 0; v_sql := ' select FLDPURAGEID,FLDPURAGEID||''!''||JK_KHDDH||''!''||CONTRACTNO||''!''||Jk_Dntype||''!''||Fldcreatedate||''!''||FLDPURCHASER||''!''||'; v_sql := v_sql || 'FLDAGENTNAME||''!''||FLDCURCODE||''!''||FLDCOMPANY||''!''||FLDAGENTDATE||''!''||'; v_sql := v_sql || 'FLDIMPORTPORT||''!''||FLDBANKSTYLE||''!''||FLDCurrency||''!''||jk_rate'; v_sql := v_sql || ' from TBLPURPLANINFO where VERIFY=' || i_VERIFY; if length(i_FLDPURCONTRACTNO) > 0 then v_Sql := v_Sql || ' and FLDPURAGEID = ''' || i_FLDPURCONTRACTNO || ''''; end if; if length( i_FLDCREATEDATE) > 0 then v_sql := v_Sql || ' and FLDCREATEDATE = ''' || i_FLDCREATEDATE || ''''; end if; if length(i_JK_DDH) > 0 then v_sql := v_Sql || ' and JK_KHDDH = ''' || i_JK_DDH || ''''; end if; if length(i_userId) > 0 then v_sql := v_Sql || ' and FLDPURCHASER = ''' || i_userId || ''''; end if; o_tableHead := '委托书号#客户订单号#合同协议号#单据类型#录入日期#采购员#委托方名称#供应商名称#事业部名称#委托日期#进口口岸#付款方式#币制#汇率'; o_tablewidth := '100#100#100#100#100#100#300#300#100#100#100#100#100#100'; open o_resultRef for v_sql; exception WHEN OTHERS THEN o_retCode := -1; --操作异常 DBMS_OUTPUT.PUT_LINE(SQLERRM); rollback; end;

解决方案

||的作用是拼接字符串!的作用是分隔符一般会用123,123,123来表示一条记录的3个字段的值,这里的都好起到了分隔符的作用。而写这个sql的人,没用逗号来做分隔符,而是用了叹号做分隔符,上面的那个例子就变成了123!123!123

时间: 2024-09-17 03:38:15

Oracle 的存储过程里面的SQL 语句(|| “!”)看不懂,望大家给个答案的相关文章

dedecms-织梦中标签里面的sql语句中arc是什么表?

问题描述 织梦中标签里面的sql语句中arc是什么表? 这是arclist标签中的一段. 这个arc是什么表,估计是dede_archives ,但是怎么能这样写的呢? $query = "SELECT arc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault,tp.defaultname,tp.namerule,tp.namerule2,tp.ispart, tp.moresite,tp.siteurl,tp.sitepath $addfields

Access和SQL Server里面的SQL语句的不同之处_数据库其它

我的感觉是,Accees数据库虽然可以称得上是小型的关系型数据库,并且也是使用的结构化查询语言SQL,但它的语法(主要体现在函数上),却类似vbscript的语法,我想,这应该和Access属于Office系列有关,基于它的开发和应用,自然就与VBA扯上关系,因而Access的函数库也就是VBA的函数库,而非SQL函数库.下面,我们来具体看下Access和SQL Server在查询语句的编写上具体的不同. 一.数据类型转换: Access: SELECT '调查'+CStr(Did) as di

如何查到hibernate.show_sql里面的sql语句是哪段代码生成的?

问题描述 简单说就是,如何知道hibernate生成的sql是代码里面的那一行执行的?就像抛出异常一样,可以知道是在哪个文件,哪一行出错.hibernate可以吗? 解决方案 你看这样行不行:在将会产生sql语句的地方的前面一句加上log.info("##")然后取控制台信息对##进行截取从而获取所产生的目标sql语句.解决方案二:好像不行, 只能用肉眼看!

mysql-oracle的sql语句怎么转换成MySQL里的sql语句呢

问题描述 oracle的sql语句怎么转换成MySQL里的sql语句呢 oracle的sql语句怎么转换成MySQL里的sql语句呢 解决方案 http://jingyan.baidu.com/article/ca41422fe01f251eaf99ed6e.html试试这个经验 解决方案二: 在oracle里面拼接成MySQL的语句

求oracle数据库的分页显示sql语句

问题描述 求oracle数据库的分页显示sql语句 求大神告知oracle数据库的分页显示sql语句,用rownum查不到 解决方案 http://www.cnblogs.com/xiaopang2010/archive/2012/07/23/2604880.htmlhttp://www.2cto.com/database/201304/206296.html 解决方案二: String querySql = ""; querySql += "select x.* from

get语句里面的if语句不执行(C#),不能读取别的类中函数

问题描述 get语句里面的if语句不执行(C#),不能读取别的类中函数 在一个用户控件类里面,开头定义了private static bool ini = false; 类里面写了下面的函数 bool ICommand.Enabled { get { if (ini == false) { initCmbTarget();//后面写的一个函数,在函数的开顶让ini=true } //this.Enabled = 数据检查.StartEditCmd.EditStatus; //return 数据检

着急实现-下面的SQL语句怎么解释,详细点,求大神赐教,急急急急急急!!!!!

问题描述 下面的SQL语句怎么解释,详细点,求大神赐教,急急急急急急!!!!! select convert(varchar(2),采集时间,108),count(1) from 监测执行表 (nolock) where 采集时间 > convert(varchar(10),getdate(),120) group by convert(varchar(2),采集时间,108) order by 1 解决方案 采集时间 是今天的,按小时统计数量http://www.w3school.com.cn

关于oracle关联表查询的sql语句

问题描述 关于oracle关联表查询的sql语句 现在两张表,分别是表A,表B. 表A: ID CONTENT STARTDATE ENDDATE 1 测试内容1 2014/6/1 2014/6/15 2 测试内容2 2014/5/25 2014/6/30 3 测试内容3 2014/6/8 2014/7/1 4 测试内容4 2014/6/10 2014/6/30 表B: ID A_ID CONTENT MDATE 1 2 测试1 2014/6/5 2 2 测试3 2014/5/3 3 4 测试2

大量数据执行-oracle在存储过程中执行update语句

问题描述 oracle在存储过程中执行update语句 在存储过程中经过加工对表执行update语句,但表的数据太大了,2百多万数据的表我就要执行1个多小时,,,8千多万数据的表要怎么办啊? 解决方案 有这样的思路你可参考下: 思路1.写存储过程,引入loop循环,分批次更新.提交: 思路2.以nologging形式重新建表,按新规则把数据插过来: