免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2320 | 回复: 5
打印 上一主题 下一主题

请问存储过程里如何返回大于255位的字符串? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-11-02 22:53 |只看该作者 |倒序浏览
char型的返回一堆空格,用trim去掉后还变成varchar型的.
请问用什么类型的变量,怎么定义?

论坛徽章:
0
2 [报告]
发表于 2006-11-03 08:38 |只看该作者
测试用char(1024)看看

论坛徽章:
0
3 [报告]
发表于 2006-11-03 12:42 |只看该作者
试过了,但char型的值后面带的空格如何去掉?
比字符串a定义为char(500),实际有300位长的字符串
存储过程返回为returning char(500).
执行结果返回的值是位长为500的字符串,trim(a)去掉空格后返回的是300位的varchar型,出错,因为
varchar最大255,但返回结果要求是不带空格的字符串,该怎么做?

论坛徽章:
0
4 [报告]
发表于 2006-11-03 13:24 |只看该作者
建议用ec去处理。

论坛徽章:
0
5 [报告]
发表于 2006-11-03 14:09 |只看该作者
测试了个方法,不用trim处理,这个有8100字节长了。


  1. --  drop procedure  tt;
  2. create procedure  tt() returning char(8192);

  3.         define s1 char(8192);
  4.         define s2 char(8192);
  5.         define s3 char(8192);
  6.         define s char(8192);
  7.         define i integer;
  8.         define l1 integer;
  9.         define l2 integer;
  10.         define l3 integer;

  11. --        set debug file to "/tmp/tt.log" ;
  12.         let s1="";
  13.         let s2="";
  14.         let s3="";
  15.         let s="";

  16.         --trace on;
  17.         for i = 1 to 900
  18.                 let l1 = length( s1);
  19.                 let l2 = length( s2);
  20.                 let l3 = length( s3);
  21.                 let s1 = substr( s1,1,l1)||"123";
  22.                 let s2 = substr( s2,1,l2)||"abc";
  23.                 let s3 = substr( s3,1,l3)||"xyz";
  24.         end for
  25.         --trace " s1 = "||s1;
  26.         --trace " s2 = "|| s2;
  27.         --trace " s3 = "||s3;
  28.        
  29.         let l1 = length( s );
  30.         let s = substr( s, 1,l1 ) || s1;
  31.         let l1 = length( s );
  32.         let s = substr( s, 1,l1 ) || s2;
  33.         let l1 = length( s );
  34.         let s = substr( s, 1,l1 ) || s3;
  35.         return s;
  36. end procedure ;

复制代码

[ 本帖最后由 wenlq 于 2006-11-3 14:15 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2006-11-03 23:31 |只看该作者
道理已经明白了,多谢啦!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP