Oracle 怎么把存储过程传过来的参数拼接成一个字符串啊!

overmindsl 2011-11-11 10:46:33
create or replace procedure STRFHYC(d1hour00 IN VARCHAR2,d1hour03 IN VARCHAR2,d1hour06 IN VARCHAR2) is

str1 varchar(1000);
begin
str1:=''||d1hour00||''+'-'+''||d1hour03||''+'-'+''||d1hour00||'';
dbms_output.put_line(str1);
end STRFHYC;


这么写老提示我字符串拼写不对!谁知道怎么弄啊!帮帮忙啊
...全文
2581 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
overmindsl 2011-11-11
  • 打赏
  • 举报
回复
分都给大家了哈!按热心度和给出答案给的分!第一次弄呵呵!多少大家别建议哈
overmindsl 2011-11-11
  • 打赏
  • 举报
回复
万分感谢大家呵呵!数据库不太会写!错误多多啊!终于好用了!
007-x 2011-11-11
  • 打赏
  • 举报
回复
先执行这段,看有没有错误信息
CREATE OR REPLACE PROCEDURE strfhyc (
d1hour00 IN VARCHAR2,
d1hour03 IN VARCHAR2,
d1hour06 IN VARCHAR2
)
IS
str1 VARCHAR (1000);
BEGIN
str1 := d1hour00 || '-' || d1hour03 || '-' || d1hour00;
DBMS_OUTPUT.put_line (str1);
END strfhyc;

再跑这句
set serverout on
call strfhyc ('1','2','3');/
rfb0204421 2011-11-11
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 overmindsl 的回复:]
晕啊
create or replace procedure STRFHYC(d1hour00 IN VARCHAR2,d1hour03 IN VARCHAR2,d1hour06 IN VARCHAR2) is

str1 varchar(1000);
begin
str1:=''||d1hour00||'-'||d1hour03||'-'||d1hour00||'';

……
[/Quote]
楼主,细心点儿嘛,最后一个明明是d1hour06 ,你写成d1hour00了,语句没有错误,结果不正确
cutebear2008 2011-11-11
  • 打赏
  • 举报
回复
d1hour00变量本来就是varchar2类型的前面就不用加单引号了啊。
set serveroutput on;
DECLARE
D1HOUR00 VARCHAR2(10) := '1';
D1HOUR03 VARCHAR2(10) := '2';
d1hour06 VARCHAR2(10) := '3';
str1 varchar(1000);
begin
str1:= d1hour00||'-'||d1hour03||'-'||d1hour06;
DBMS_OUTPUT.PUT_LINE(STR1);
end;
cutebear2008 2011-11-11
  • 打赏
  • 举报
回复
create or replace procedure STRFHYC(d1hour00 IN VARCHAR2,d1hour03 IN VARCHAR2,d1hour06 IN VARCHAR2) is

str1 varchar(1000);
begin
str1:= d1hour00||'-'||d1hour03||'-'||d1hour00;
DBMS_OUTPUT.PUT_LINE(STR1);
end STRFHYC;
overmindsl 2011-11-11
  • 打赏
  • 举报
回复
Compilation errors for PROCEDURE JLGR.STRFHYC

Error: PLS-00103: 出现符号 "DBMS_OUTPUT"在需要下列之一时:
* & = - + ; < / >
at in is mod remainder not rem <an exponent (**)>
<> or != or ~= >= <= <> and or like LIKE2_ LIKE4_ LIKEC_
between || member SUBMULTISET_
符号 "*" 被替换为 "DBMS_OUTPUT" 后继续。
Line: 8
Text: dbms_output.put_line(str1)



以上报错
测试 输入 1,2,3
最后应该形成1-2-3
007-x 2011-11-11
  • 打赏
  • 举报
回复
错误信息是什么?
把你的执行语句也贴出来看看?
overmindsl 2011-11-11
  • 打赏
  • 举报
回复
晕啊
create or replace procedure STRFHYC(d1hour00 IN VARCHAR2,d1hour03 IN VARCHAR2,d1hour06 IN VARCHAR2) is

str1 varchar(1000);
begin
str1:=''||d1hour00||'-'||d1hour03||'-'||d1hour00||'';

dbms_output.put_line(str1);
end STRFHYC;

额额复制多了!但是这样也不打印啊!报错dbms_output.put_line(str1);
有问题啊!
007-x 2011-11-11
  • 打赏
  • 举报
回复
不是str1:=str1:=''||d1hour00||'-'||d1hour03||'-'||d1hour00||'';
是str1:=''||d1hour00||'-'||d1hour03||'-'||d1hour00||'';

overmindsl 2011-11-11
  • 打赏
  • 举报
回复
晕啊
create or replace procedure STRFHYC(d1hour00 IN VARCHAR2,d1hour03 IN VARCHAR2,d1hour06 IN VARCHAR2) is

str1 varchar(1000);
begin
str1:=str1:=''||d1hour00||'-'||d1hour03||'-'||d1hour00||'';

dbms_output.put_line(str1);
end STRFHYC;

dbms_output.put_line(str1);
怎么按大家的改了!
报错又提示它有错了啊
这是怎么回事啊
rfb0204421 2011-11-11
  • 打赏
  • 举报
回复
str1:=d1hour00||'-'||d1hour03||'-'||d1hour00;


007-x 2011-11-11
  • 打赏
  • 举报
回复
那就是2楼的理解喽
[Quote=引用 2 楼 rfb0204421 的回复:]
str1:=''||d1hour00||'-'||d1hour03||'-'||d1hour00||'';
[/Quote]
str1:=''||d1hour00||'-'||d1hour03||'-'||d1hour00||'';
不过这前后加''是干什么用的?
overmindsl 2011-11-11
  • 打赏
  • 举报
回复
晕啊
dbms_output.put_line(str1);
怎么按大家的改了!
报错又提示他有错了啊
overmindsl 2011-11-11
  • 打赏
  • 举报
回复
啊!!是么!那能帮我拼接下么!
-号是连接2个变量用的!想让形成d1hour00-d1hour03-d1hour006这样的字符串
+号我以为和java一样要用他连接字符串呢
xiaoyu871225 2011-11-11
  • 打赏
  • 举报
回复
同上[Quote=引用 1 楼 nvhaixx 的回复:]
你那边的加号减号是干吗用的,oracle拼接字符时是用||来进行拼接
[/Quote]
rfb0204421 2011-11-11
  • 打赏
  • 举报
回复
str1:=''||d1hour00||'-'||d1hour03||'-'||d1hour00||'';
nvhaixx 2011-11-11
  • 打赏
  • 举报
回复
你那边的加号减号是干吗用的,oracle拼接字符时是用||来进行拼接

17,090

社区成员

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

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