【问题标题】:PLS-00103 Encountered symbol ">" error while executing stored prcedurePLS-00103 执行存储过程时遇到符号“>”错误
【发布时间】:2017-05-05 05:01:30
【问题描述】:

我有以下存储过程,当我尝试执行它时会抛出错误。所有的事情都是正确的,但不知道为什么会抛出这个错误。谁能帮我解决这个问题。

create or replace PROCEDURE FR_Notes_Mng (
P_STR_ID IN VARCHAR2,
  p_Ref_no in VARCHAR2,
  P_UserId in VARCHAR2,
  P_Note IN VARCHAR2,
  P_datestamp IN VARCHAR2,
  p_Request_ID in varchar2,
  p_WrittenDate IN VARCHAR2
) AS

 numSqlCode    Number := 0;
  RecCounter    Number :=0;
  strTable      varchar2(30) := 'FR_Notes';
  strAction     varchar2(30) := 'Insert';
  vSQLERM       VARCHAR2(200) :=SUBSTR(SQLERRM, 1, 85);
BEGIN

Select Count(*) into RecCounter From FR_Notes where str_id=P_str_ID and ref_no=P_Ref_No and user_id=P_UserId and notes=P_note and datestamp=P_Datestamp and to_date(writtendate,'YYYYMMDDHH24MISS')=to_Date(p_WrittenDate,'YYYYMMDDHH24MISS') and request_id=p_request_id;

  If RecCounter=0 then 
    insert into Fr_Notes Values
    (p_str_ID,p_ref_no,p_UserId,P_note,p_Datestamp,to_date(p_WrittenDate,'YYYYMMDDHH24MISS'),p_Request_ID,'FR',sysdate);
    commit;
  end if;
EXCEPTION
  WHEN OTHERS THEN
    numSqlCode := SQLCODE;
    INSERT INTO FR_UNEXPECTED_ERRORS (TABLE_NAME, KEY, ACTION, ERR_CODE)
    VALUES (strTable, vSQLERM, strAction, numSqlCode);
END;

抛出错误:

ORA-06550:第 1 行,第 47 列:PLS-00103:在预期以下情况之一时遇到符号“>”:. ( ) , *@% & = - + at in is mod 余数不是 rem 或 != 或 ~= >= and or like2 like4 likec 之间 ||多重集成员子多重集

当我在数据库级别执行它时,它正确执行但在 vbscript 代码中失败。下面是我用来执行的 vb-script 代码,它抛出了这个错误

function InsertNotes(str_id,ref_no,userId,Note,strdatestamp,writtenDates)
   Dim strcon2: set strcon2=server.CreateObject("ADODB.Connection")
   Dim sql2
   Dim strcmd2
   strcon2.open "Provider=MSDAORA;Data Source="&Application("DBDsn")&";User Id="&Application("DBUserName")&"; Password="&Application("DBPassword")&";"
   sql2 = "rep2.FR_Notes_Mng"    
   Set strcmd2 = Server.CreateObject("ADODB.Command")
   Set strcmd2.ActiveConnection = strCOn2
   strcmd2.CommandText = sql2
   strcmd2.CommandType = 4
   strcmd2.Parameters.Append strcmd2.CreateParameter("p_str_id", 200,1,50,str_id)
   strcmd2.Parameters.Append strcmd2.CreateParameter("p_ref_no", 200,1,50,ref_no)
   strcmd2.Parameters.Append strcmd2.CreateParameter("p_UserId", 200,1,50,userId)
   strcmd2.Parameters.Append strcmd2.CreateParameter("p_note", 200,1,200,Note)
   strcmd2.Parameters.Append strcmd2.CreateParameter("p_Datestamp", 200,1,50,strdatestamp)
   strcmd2.Parameters.Append strcmd2.CreateParameter("p_Request_id", 200,1,50,"012")
   strcmd2.Parameters.Append strcmd2.CreateParameter("p_WrittenDate", 200,1,50,writtenDates)

   strcmd2.Execute
end function

【问题讨论】:

  • 您确定这是产生此错误的实际代码吗?
  • 程序是否编译没有任何错误?
  • 是的,它在数据库级别执行时运行没有错误,但是当我通过 vb 脚本中的 ADODB 代码执行它时,它会抛出类似上面的错误,过程也被编译没有任何错误
  • @Audumbar 尝试从后端执行该过程以确保它是万无一失的。
  • 我仍然对错误消息持怀疑态度。您粘贴的错误消息为 encountered the symbol >`,但代码中的任何位置都没有 >

标签: oracle vbscript asp-classic


【解决方案1】:

实际上,我检查了在 VB 脚本调用中传递了哪些值到该存储过程,发现 str_id 的值没有传递,因此过程执行失败并抛出上述错误。

ORA-06550:第 1 行,第 47 列:PLS-00103:在预期以下情况之一时遇到符号“>”:. ( ) , *@% & = - + at in is mod 余数不是 rem 或 != 或 ~= >= and or like2 like4 likec 之间 ||多重集成员子多重集

我已经为 str_id 变量分配了一个值,并通过执行代码进行了重新检查,它工作正常。

我在这里通过这个错误了解到一件事,即当我们没有传递必需的参数值或者我们将参数作为 null 传递时,即使生成这种类型的错误是强制性的。

感谢所有帮助我解决这个问题的人。

【讨论】:

    猜你喜欢
    • 2018-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多