PROCEDURE SMS_SEND(DEVICE_NUMBER in VARCHAR2,SMS_CONTENT VARCHAR2) 
AS 
v_sms_content varchar2;
v_sms_count number;
v_sms_length number;
v_var number;
v_sql VARCHAR2(2056);
BEGIN  
    v_sms_content := SMS_CONTENT;
    v_sms_length := length(v_sms_content);
    v_sms_count := ceil(v_sms_length /70);
    v_var := 0;    when v_var <= v_sms_count loop
       
       v_sms_content := substr(SMS_CONTENT,v_var*70,(v_var+1)*70);
       v_sql :='insert into  BILLING_V10.IMP_SMS@msg values                                  (''||DEVICE_NUMBER''||,''||v_sms_content||'')';  
       execute immediate v_sql;
       commit;
    end loop;end;

解决方案 »

  1.   

    不好意思,少了一句
    PROCEDURE SMS_SEND(DEVICE_NUMBER in VARCHAR2,SMS_CONTENT VARCHAR2) 
    AS 
    v_sms_content varchar2;
    v_sms_count number;
    v_sms_length number;
    v_var number;
    v_sql VARCHAR2(2056);
    BEGIN  
        v_sms_content := SMS_CONTENT;
        v_sms_length := length(v_sms_content);
        v_sms_count := ceil(v_sms_length /70);
        v_var := 0;    when v_var <= v_sms_count loop
           
           v_sms_content := substr(SMS_CONTENT,v_var*70,(v_var+1)*70);
           v_sql :='insert into  BILLING_V10.IMP_SMS@msg values                                  (''||DEVICE_NUMBER''||,''||v_sms_content||'')';  
           execute immediate v_sql;
           commit;
           v_var := v_var + 1;
        end loop;end;
      

  2.   

    字节判断用 LengthB 函数
      

  3.   

    Compilation errors for PACKAGE BODY NEWEBA.COMMON_PKGError: PLS-00103: 出现符号 "WHEN"在需要下列之一时:
            begin case declare end
              exception exit for goto if loop mod null pragma raise return
              select update while with <an identifier>
              <a double-quoted delimited-identifier> <a bind variable> <<
              close current delete fetch lock insert open rollback
              savepoint set sql execute commit forall merge
              <a single-quoted SQL string> pipe
              <an alternatively-quoted SQL string>
           符号 "case" 被替换为 "WHEN" 后继续。
    Line: 15
    Text: when v_var <= v_sms_count loopError: PLS-00103: 出现符号 "LOOP"在需要下列之一时:
            . ( * @ % & - + / at mod
              remainder rem then <an exponent (**)> and or || multiset
    Line: 15
    Text: when v_var <= v_sms_count loopError: PLS-00103: 出现符号 "="在需要下列之一时:
            constant exception
              <an identifier> <a double-quoted delimited-identifier> table
              LONG_ double ref char time timestamp interval date binary
              national character nchar
    Line: 18
    Text: v_sql :='insert into  BILLING_V10.IMP_SMS@msg values (''||DEVICE_NUMBER''||,''||v_sms_content||'')';Error: Hint: Variable 'execute' is declared but never used in 'common_pkg'
    Line: 19
    Text: execute immediate v_sql;Error: Hint: Variable 'commit' is declared but never used in 'common_pkg'
    Line: 20
    Text: commit;Error: Hint: Parameter 'DEVICE_NUMBER' is declared but never used in 'SMS_SEND'
    Line: 3
    Text: PROCEDURE SMS_SEND(DEVICE_NUMBER in VARCHAR2,SMS_CONTENT VARCHAR2)Error: Hint: Variable 'v_sql' is declared but never used in 'SMS_SEND'
    Line: 9
    Text: v_sql VARCHAR2(2056);Error: Hint: Value assigned to 'v_sms_count' never used in 'SMS_SEND'
    Line: 13
    Text: v_sms_count := ceil(v_sms_length /70);Error: Hint: Value assigned to 'v_var' never used in 'SMS_SEND'
    Line: 14
    Text: v_var := 0;奇怪怎么抱这些错误呢?