在线等,哪位大侠知道下面的CAST语句哪里有错误,编译的时候总是提示错误

fuxin46 2008-10-10 10:43:03
提示错误Error(29,129): PLS-00103: Encountered the symbol "(" when expecting one of the following: ) varying large

create or replace PROCEDURE sp_hw_BCCreate8ByteString
(
v_psInputStr CHAR ,
v_psFieldStr CHAR ,
v_psOutputStr OUT CHAR,
piReturnCode OUT INTEGER
)

AS
l_error CHAR( 5) := '00000';
v_iLoop INTEGER ;
v_sChar CHAR( 1);
v_sCharInField CHAR( 1);
BEGIN
v_psOutputStr := '00000000';
v_iLoop := 1;
WHILE v_iLoop <= 8 LOOP
v_sChar := SUBSTR(v_psInputStr,v_iLoop,1);
v_sCharInField := SUBSTR(v_psFieldStr,v_iLoop,1);
IF ( v_sChar = '?' ) THEN
v_sChar := v_sCharInField;
ELSE
IF ( v_sChar <> '0' AND v_sChar <> '1' ) THEN
piReturnCode := -1;
RETURN ;--warning:oracle procedure can't return a value -1;
END IF ;
END IF ;
v_psOutputStr := CAST(CONCAT(CONCAT(SUBSTR(v_psOutputStr,1,v_iLoop),v_sChar),SUBSTR(v_psOutputStr,v_iLoop+1+1)) AS CHAR( 9));
v_iLoop := v_iLoop + 1;
END LOOP ;

piReturnCode := 0;
RETURN ;--warning:oracle procedure can't return a value (0);
END sp_hw_BCCreate8ByteString ;
...全文
56 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
fuxin46 2008-10-10
  • 打赏
  • 举报
回复
用你说这个方法可以,弱弱的问,from dual是啥意思?
fuxin46 2008-10-10
  • 打赏
  • 举报
回复
用你说这个方法可以,弱弱的问,from dual是啥意思?
fuxin46 2008-10-10
  • 打赏
  • 举报
回复
我调试的是oracle的语句,用你说的方法还是不行
codearts 2008-10-10
  • 打赏
  • 举报
回复
cast似乎不是pl-sql而是sql引擎中的东东,所以要用select into 赋值给变量
codearts 2008-10-10
  • 打赏
  • 举报
回复
经编译测试
v_psOutputStr := CAST(CONCAT(CONCAT(SUBSTR(v_psOutputStr,1,v_iLoop),v_sChar),SUBSTR(v_psOutputStr,v_iLoop+1+1)) AS CHAR( 9));

====>

select CAST(CONCAT(CONCAT(SUBSTR(v_psOutputStr,1,v_iLoop),v_sChar),SUBSTR(v_psOutputStr,v_iLoop+1+1)) AS CHAR( 9))
into v_psOutputStr
from dual;
yangzeDB 2008-10-10
  • 打赏
  • 举报
回复
CHAR( 9) 改成char(9) 你试一下 我用PL/SQL帮你调试了一下
fuxin46 2008-10-10
  • 打赏
  • 举报
回复
编译器提示的是cast语句错误,和return没关系吧
mantisXF 2008-10-10
  • 打赏
  • 举报
回复
把RETURN;去掉.[Quote=引用楼主 fuxin46 的帖子:]
提示错误Error(29,129): PLS-00103: Encountered the symbol "(" when expecting one of the following: ) varying large

create or replace PROCEDURE sp_hw_BCCreate8ByteString
(
v_psInputStr CHAR ,
v_psFieldStr CHAR ,
v_psOutputStr OUT CHAR,
piReturnCode OUT INTEGER
)

AS
l_error CHAR( 5) := '00000';
v_iLoop INTEGER ;
v_sChar …
[/Quote]
jdsnhan 2008-10-10
  • 打赏
  • 举报
回复
从系统虚拟表中执行。

17,090

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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