create or replace procedure STRFHYC(d1hour00 IN VARCHAR2,d1hour03 IN VARCHAR2,d1hour06 IN VARCHAR2) isstr1 varchar(1000);
begin
    str1:=''||d1hour00||''+'-'+''||d1hour03||''+'-'+''||d1hour00||'';
      dbms_output.put_line(str1);
end STRFHYC;
这么写老提示我字符串拼写不对!谁知道怎么弄啊!帮帮忙啊

解决方案 »

  1.   

    你那边的加号减号是干吗用的,oracle拼接字符时是用||来进行拼接
      

  2.   

     str1:=''||d1hour00||'-'||d1hour03||'-'||d1hour00||'';
      

  3.   

    啊!!是么!那能帮我拼接下么!
    -号是连接2个变量用的!想让形成d1hour00-d1hour03-d1hour006这样的字符串
    +号我以为和java一样要用他连接字符串呢
      

  4.   

    晕啊
     dbms_output.put_line(str1);
    怎么按大家的改了!
    报错又提示他有错了啊
      

  5.   

    那就是2楼的理解喽
    str1:=''||d1hour00||'-'||d1hour03||'-'||d1hour00||'';
    不过这前后加''是干什么用的?
      

  6.   

    str1:=d1hour00||'-'||d1hour03||'-'||d1hour00;
     
     
      

  7.   

    晕啊
    create or replace procedure STRFHYC(d1hour00 IN VARCHAR2,d1hour03 IN VARCHAR2,d1hour06 IN VARCHAR2) isstr1 varchar(1000);
    begin
      str1:=str1:=''||d1hour00||'-'||d1hour03||'-'||d1hour00||'';
     
      dbms_output.put_line(str1);
    end STRFHYC;dbms_output.put_line(str1);
    怎么按大家的改了!
    报错又提示它有错了啊 
    这是怎么回事啊
      

  8.   

    不是str1:=str1:=''||d1hour00||'-'||d1hour03||'-'||d1hour00||'';
    是str1:=''||d1hour00||'-'||d1hour03||'-'||d1hour00||'';
      
      

  9.   

    晕啊
    create or replace procedure STRFHYC(d1hour00 IN VARCHAR2,d1hour03 IN VARCHAR2,d1hour06 IN VARCHAR2) isstr1 varchar(1000);
    begin
      str1:=''||d1hour00||'-'||d1hour03||'-'||d1hour00||'';
      
      dbms_output.put_line(str1);
    end STRFHYC;额额复制多了!但是这样也不打印啊!报错dbms_output.put_line(str1);
    有问题啊!
      

  10.   

     Compilation errors for PROCEDURE JLGR.STRFHYCError: 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
      

  11.   

    create or replace procedure STRFHYC(d1hour00 IN VARCHAR2,d1hour03 IN VARCHAR2,d1hour06 IN VARCHAR2) isstr1 varchar(1000);
    begin
      str1:= d1hour00||'-'||d1hour03||'-'||d1hour00;
      DBMS_OUTPUT.PUT_LINE(STR1);
    end STRFHYC;
      

  12.   

    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;
      

  13.   

    楼主,细心点儿嘛,最后一个明明是d1hour06 ,你写成d1hour00了,语句没有错误,结果不正确
      

  14.   

    先执行这段,看有没有错误信息
    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');/