请问我的函数错在哪?

Benny007ok 2005-07-21 04:38:11
CREATE OR REPLACE FUNCTION GetOfficeNameListByIDList(officeIDList VARCHAR2(200))
RETURN VARCHAR2 IS

--DECLARE officeIDList VARCHAR2(200);
officeNameList VARCHAR2(300);
ID VARCHAR2(10);
ind INT;
BEGIN
--officeIDList := '2,34,1,65,32';
IF officeIDList = ''THEN
RETURN '';
END IF;
officeIDList := LTRIM(officeIDList, ',');
officeIDList := RTRIM(officeIDList, ',');
officeIDList := officeIDList || ',';
ID := '';
officeNameList := '';
WHILE INSTR(officeIDList, ',') IS NOT NULL AND INSTR(officeIDList, ',') > 0
LOOP
ind := INSTR(officeIDList, ',');
ID := LEFT(officeIDList, ind - 1);
SELECT officeNameList := officeNameList || F_OrganiseName || ',' FROM TS_Organise WHERE F_ID := CONVERT(INT, ID);
officeIDList := SUBSTR(officeIDList, ind || 1, (LEN(officeIDList) - ind));
END LOOP;
officeNameList := SUBSTR(officeNameList, 0, LEN(officeNameList));
RETURN officeNameList;
END GetOfficeNameListByIDList;
如题!
...全文
163 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Benny007ok 2005-07-22
  • 打赏
  • 举报
回复
TO beyondrobey() :
officeIDList := LTRIM(officeIDList, ',');
officeIDList := RTRIM(officeIDList, ',');
我这两句是为了适应有时候可能会传入是',2,34,1,65,32,'两边或一边有逗号的情况.
guangli_zhang 2005-07-22
  • 打赏
  • 举报
回复
具体环境是什么?
目的是什么?
看不太懂
我用的是Oracle 9好像没有函数left
beyondrobey 2005-07-21
  • 打赏
  • 举报
回复
officeIDList := LTRIM(officeIDList, ',');
officeIDList := RTRIM(officeIDList, ',');出错.因为你传的是'2,34,1,65,32'.
你应该养成好的错误处理习惯.
liuyi8903 2005-07-21
  • 打赏
  • 举报
回复
用pl/sql dev单步调度一下吧!
大道至简VP 2005-07-21
  • 打赏
  • 举报
回复
SELECT officeNameList := officeNameList || F_OrganiseName || ',' FROM TS_Organise WHERE F_ID := CONVERT(INT, ID);
改成:SELECT officeNameList = officeNameList || F_OrganiseName || ',' FROM TS_Organise WHERE F_ID = CONVERT(INT, ID);

Benny007ok 2005-07-21
  • 打赏
  • 举报
回复
没人能回答我吗?
这只是一个普通的一个函数啊!
Benny007ok 2005-07-21
  • 打赏
  • 举报
回复
编译的时候没报错!不过在
select GetOfficeNameListByIDList('2,34,1,65,32') from dual
时候说我的函数无效
chinaup 2005-07-21
  • 打赏
  • 举报
回复
报的什么错误
Benny007ok 2005-07-21
  • 打赏
  • 举报
回复
不行啊!还是错的!
Benny007ok 2005-07-21
  • 打赏
  • 举报
回复
错误的意思是指语法上错在哪!
LGQDUCKY 2005-07-21
  • 打赏
  • 举报
回复
CREATE OR REPLACE FUNCTION GetOfficeNameListByIDList(officeIDList VARCHAR2(200))


VARCHAR2(200))改为VARCHAR2




SELECT officeNameList := officeNameList || F_OrganiseName || ',' FROM TS_Organise WHERE F_ID := CONVERT(INT, ID);





17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧