现在5个varcher2变量
msg1 := 'abc';
msg2 := 'def';
msg3 := 'ghi';
msg4 := 'jkl';
msg5 := 'mno';
可不可以用循环 重新 赋值给 一个新的变量使之连接成一个新的字符串? 高手请指点一下.谢谢.
msg1 := 'abc';
msg2 := 'def';
msg3 := 'ghi';
msg4 := 'jkl';
msg5 := 'mno';
可不可以用循环 重新 赋值给 一个新的变量使之连接成一个新的字符串? 高手请指点一下.谢谢.
解决方案 »
- 请问一下测试这个存储过程sql语句怎么写啊?
- DBA oracle 數據消理, 把一些歷史資料轉到磁帶或光盤上
- 关于pl/sql动态声明变量的问题
- ------请进来帮帮忙!--------
- oracle中有无象SQL Server中的“通知服务”
- oracle 查询问题
- 裸体跪求帮忙,特急,急!!弱鸟问题,在线等
- ORA-12514是什么错误?我一重启机器,配好的监听就报这个错?郁闷
- ORA-00604: error occurred at recursive SQL level 1和ORA-00018: maximum number of sessions exceeded 是什么错误怎么解决 谢谢
- ABCD四个表都有一个字段叫BH是放学号的,现在希望将ABCD四个表中的BH都提出来,并且取消重复的
- oracle 存储过程调用的问题
- PLSQL工具有个可是把SQL代码格式化那个在哪里啊?
MSG:=msg1||msg2||msg3||msg4||msg5;
SQL> SET SERVEROUTPUT ON;
SQL> DECLARE
2 TYPE strType IS TABLE OF VARCHAR2(200) INDEX BY PLS_INTEGER;
3 str strType;
4 s VARCHAR2(2000) := '';
5 BEGIN
6 str(1) := 'abc';
7 str(2) := 'def';
8 str(3) := 'ghi';
9 str(4) := 'jkl';
10 str(5) := 'mno';
11 FOR i IN 1 .. 5 LOOP
12 s := s || str(i);
13 END LOOP;
14 dbms_output.put_line(s);
15 END;
16 /
abcdefghijklmnoPL/SQL 过程已成功完成。SQL>
上面是声明一个自定义的索引表类型,然后就可以象其它标准类型一要被用来声明变量了。
另外oracle中还有嵌套表、变长数组等类似于数组的自定义类型。推荐一本书《精通Oracle 10g PL/SQL编程》上讲得很详细,网上有电子书下载。
我现在的这几个 msg1 msg2 msg3 msg4 msg5 .....是存储过程入参,已经定义好了的50个参数.照上面好像还是实现不了. 因为平台的特殊原因,调用存储过程的入参长度不长于70个字符. 为了能接收一个比较长的字符串,只能定义多个参数(50个入参),用来接收数据.然后再拼起来,再解析.