存储过程oracle字符串拼接字符串
⑴ oracle listagg 拼接的字符串给多少长度
listagg 是字符串连接的结果过长。
没有办法,这个函数的返回值是varchar2类型,你改不了。除非写存储过程,在pl、sql中,字符串长度可以达到32768,然后用一个clob来存。
超出的部分不截除掉倒是个办法,不过语句会复杂得多,性能也会下降。
⑵ oracle 存储过程拼接传参问题!
你可以拼接'to_date(' || 字符串类型日期 || ‘,YYYY-MM-DD HH24:MI:SS)’ || ....
日期格式可根据需要调整
⑶ Oracle 怎么把存储过程传过来的参数拼接成
给你一个 传递参数的例子
SQL> CREATE OR REPLACE PROCEDURE HelloWorld2 (
2 p_user_name IN VARCHAR2,
3 p_out_val OUT VARCHAR2,
4 p_inout_val IN OUT VARCHAR2
5 ) AS
6 BEGIN
7 dbms_output.put_line('Hello ' || p_user_name || p_inout_val || '!');
8 p_out_val := 'A';
9 p_inout_val := 'B';
10 END HelloWorld2;
11 /
Procere created.
SQL> DECLARE
2 p_outval VARCHAR2(10);
3 p_inoutval VARCHAR2(10) := '~Hi~';
4 BEGIN
5 HelloWorld2('Edward', p_outval, p_inoutval);
6
7 dbms_output.put_line('p_outval=' || p_outval);
8 dbms_output.put_line('p_inoutval=' || p_inoutval);
9 END;
10 /
Hello Edward~Hi~!
p_outval=A
p_inoutval=B
PL/SQL procere successfully completed.
SQL>
⑷ oracle 在PLSQL脚本中如何表名称与数字字符串拼接
使用plsql存储过程制造一个脚本如:
create or replace procere test_val
(etl_date varchar2, --时间或者数字变量
data out sys_refcursor ---存放数据
) as
s_sql varchar2(1000); --执行sql
begin
s_sql := 'SELECT A,B FROM tsalpludetail' || etl_date ;
--dbms_output.put_line(s_sql);----打印sql可以不需要
open data for s_sql; ---把结果集放入data
end test_val;
执行后,打开存储过程
至此完成
⑸ oracle在写存储过程时怎样将变量和字符串进行连接
变量直接写,要连接字符串的话,用 || 这个符号,后面的字符串用单引号引。
⑹ SQL怎么拼接字符串
不同的数据库,相应的字符串拼接方式不同,通过对比加深一下记忆。
一、MySQL字符串拼接
1、CONCAT函数
语法格式:CONCAT(char c1, char c2, ..., char cn) ,其中char代表字符串,定长与不定长均可以
连接两个字符串
(6)存储过程oracle字符串拼接字符串扩展阅读
字符串函数(String processing function)也叫字符串处理函数,指的是编程语言中用来进行字符串处理的函数,如C,pascal,Visual以及LotusScript中进行字符串拷贝,计算长度,字符查找等的函数。
字符串主要用于编程,概念说明、函数解释、用法详述见正文,这里补充一点:字符串在存储上类似字符数组,所以它每一位的单个元素都是可以提取的,如s=“abcdefghij”,则s[1]=“a”,s[10]="j"。
而字符串的零位正是它的长度,如s[0]=10(※上述功能Ansistring没有。),这可以给我们提供很多方便,如高精度运算时每一位都可以转化为数字存入数组。
字符串函数的应用
1、连接运算 concat(s1,s2,s3…sn) 相当于s1+s2+s3+…+sn.
例:concat(‘11’,'aa’)='11aa’;
2、求子串。 Copy(s,I,I) 从字符串s中截取第I个字符开始后的长度为l的子串。
例:(‘abdag’,2,3)=’bda’
3、删除子串。过程 Delete(s,I,l) 从字符串s中删除第I个字符开始后的长度为l的子串。
例:s:=’abcde’;delete(s,2,3);结果s:=’ae’
4、插入子串。 过程Insert(s1,s2,I) 把s1插入到s2的第I个位置
例:s:=abc;insert(‘12’,s,2);结果s:=’a12bc’
5、求字符串长度 length(s) 例:length(‘12abc’)=5
在ASP中 求字符串长度用 len(s)例: len("abc12")=5
6、搜索子串的位置 pos(s1,s2) 如果s1是s2的子串 ,则返回s1的第一个字符在s2中的位置,若不是子串,则返回0.
例:pos(‘ab’,’12abcd’)=3
7、字符的大写转换。Upcase(ch) 求字符ch的大写体。
例:upcase(‘a’)=’A’
8、数值转换为数串。 过程 Str(x,s) 把数值x化为数串s.
例:str(12345,s); 结果s=’12345’
9、数串转换为数值。 过程val(s,x,I) 把数串s转化为数值x,如果成功则I=0,不成功则I为无效字符的序数,第三个参数也可不传
例:val(‘1234’,x,I);结果 x:=1234
⑺ sql中存储过程 怎样拼接 字符串 下图中的拼接方法保存。
exec sp_executesql N'SELECT @c=count(1) FROM [dbo].[Table] '+@strsql,N'@c int output',@count output
select @count
⑻ 怎样Oracle把多条记录的相同字段拼成一个字符串
select 别名 from(
select row_number()over(order by lv desc) id,name from
(
select level lv,replace(sys_connect_by_path(字段,','),',','') 别名from
(
select name,row_number()over(order by 字段) id from 查询结果
)
connect by prior id = id-1
)
)where id=1;
*************
测试log:
*************
[TEST@ORA1] SQL>select * from test2;
NAM ID
--- ----------
aaa 234
bbb 786
ccc 879
[TEST@ORA1] SQL>select name from(
2 select row_number()over(order by lv desc) id,name from
3 (
4 select level lv,replace(sys_connect_by_path(name,','),',','') name from
5 (
6 select name,row_number()over(order by name) id from test2
7 )
8 connect by prior id = id-1
9 )
10 )where id=1;
NAME
--------------------------------------------------------------------------------
aaabbbccc
*************************
10g以上(含10g):
select replace(wm_concat(字段),',','') 别名 from 查询结果;
测试log:
[TEST@ORA1] SQL>select * from test2;
NAM ID
--- ----------
aaa 234
bbb 786
ccc 879
[TEST@ORA1] SQL>select replace(wm_concat(name),',','') name from test2;
NAME
---------------------------------------------------------------------------
aaabbbccc
---
以上,希望对你有所帮助。
⑼ Oracle字符串的拆分和拼接
如果是固定的格式,那就好办,检测字段中的“,”分割成四段,然后按要求接起来。
使用函数好些,可以直接调用。
函数写好:已经测试过。
CREATEORREPLACEFUNCTIONjson_montage(JSONINVARCHAR2)RETURNVARCHAR2IS
In_JSONVARCHAR2(4096);
v_JSONVARCHAR2(4096)DEFAULT'{"comicPkgList":[{J1,J2,J4}],J3}';
v_J1VARCHAR2(4096);
v_J2VARCHAR2(4096);
v_J3VARCHAR2(4096);
v_J4VARCHAR2(4096);
v_splitVARCHAR2(10)DEFAULT',';
lenNUMBER(10)default0;
placeNUMBER(10)default2;
BEGIN
In_JSON:=JSON;
/*
原字符串:
{"IsSmsConfirm":false,"proctID":"MDSP3331111","autoReceive":false,"supCycle":1}
期望转换后的:
{"comicPkgList":[{"IsSmsConfirm":false,"proctID":"MDSP3331111","supCycle":1}],"autoReceive":false}
*/
In_JSON:=RTRIM(LTRIM(In_JSON));
place:=INSTR(In_JSON,v_split,2,1);
len:=place-1-1;
v_J1:=SUBSTR(In_JSON,2,len);
len:=INSTR(In_JSON,v_split,2,2)-place-1-0;
v_J2:=SUBSTR(In_JSON,place+1,len);
place:=INSTR(In_JSON,v_split,2,2);
len:=INSTR(In_JSON,v_split,2,3)-place-1-0;
v_J3:=SUBSTR(In_JSON,place+1,len);
place:=INSTR(In_JSON,v_split,2,3);
len:=LENGTH(In_JSON)-place-1;
v_J4:=SUBSTR(In_JSON,place+1,len);
v_JSON:='{"comicPkgList":[{'||v_J1||','||v_J2||','||v_J4||'}],'||v_J3||'}';
IFv_JSON='{"comicPkgList":[{J1,J2,J4}],J3}'THEN
v_JSON:='ERROR';
ENDIF;
RETURNv_JSON;
EXCEPTION
WHENNO_DATA_FOUNDTHEN
NULL;
WHENOTHERSTHEN
RAISE;
ENDjson_montage;
/
⑽ Oracle 怎么把存储过程传过来的参数拼接成一个字符串
Oracle 怎么把存储过程传过来的参数拼接成一个字符串
你可以拼接'to_date(' || 字符串类型日期 || ‘,YYYY-MM-DD HH24:MI:SS)’ || .... 日期格式可根据需要调整