循环内变量问题,请教

[复制链接]
查看11 | 回复4 | 2010-2-11 01:01:06 | 显示全部楼层 |阅读模式
写一个存储过程,目的,将输入的字符串倒置,比如说输入‘hello’,调用存储过程后,输出为‘olleh’,有一个问题想请教一下,比如说我定义了s为varchar2,s为根据输入的字符取得的长度后循环substr取得的每一个字符,但是在循环里,我怎么将上一次取得的s和新取得的s进行合并啊?
就是链接上一次取得的s和这一次的s,最后输出。




回复

使用道具 举报

千问 | 2010-2-11 01:01:06 | 显示全部楼层
SQL> create or replace function f_reverse (p_str in varchar2) return varchar2 as
2 v_return varchar2(30000);
3begin
4 for i in 1..length(p_str) loop
5v_return := v_return || substr(p_str, -i, 1);
6 end loop;
7 return v_return;
8end;
9/
函数已创建。
SQL>
SQL> select f_reverse('abcdefg') from dual;
F_REVERSE('ABCDEFG')
-------------------------------------------------------------------------------------
gfedcba
回复

使用道具 举报

千问 | 2010-2-11 01:01:06 | 显示全部楼层
yangtingkun,感谢,我想请问的是substr(p_str, -i, 1)中的-i是不是从最后一位开始取?
回复

使用道具 举报

千问 | 2010-2-11 01:01:06 | 显示全部楼层
感谢,用-i的效果是不是和用reverse关键字的效果一样?
回复

使用道具 举报

千问 | 2010-2-11 01:01:06 | 显示全部楼层
负值代表从字符串末尾开始取
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行