【问题标题】:PL SQL error symbol in insert statement from stored procedure存储过程中插入语句中的 PL SQL 错误符号
【发布时间】:2021-05-23 16:37:52
【问题描述】:

我开始使用 Oracle PL/SQL。我正在尝试创建一个简单的存储过程以插入到表中,但我无法找到引发我的问题。

这是错误:

PLS-00103:在预期以下情况之一时遇到符号“(”:

:= 。 ) , @ % 默认字符符号 ":=" 被替换为 "(" 继续。

我的存储过程:

CREATE OR REPLACE PROCEDURE TECH.SP_INSERT
(
   p_date_now    IN DATE,
   p_user_id     IN NUMBER,
   p_summary     IN VARCHAR2(1000)
)
AS 
BEGIN 

INSERT INTO SUMMARY_TABLE
          (
            id,
            date,
            user_id,
            summary_text
          )
      VALUES
          (
            SEQ_TBL_SUMMARY_ID.NEXTVAL,
            p_date_now,
            p_user_id,
            p_summary
          );

END TECH.SP_INSERT;

【问题讨论】:

    标签: sql oracle plsql


    【解决方案1】:

    您不能为过程指定 VARCHAR2 参数的大小。

    该过程应该愉快地接受最大为 32k 的字符串(PL/SQL 中 VARCHAR2 的最大大小)。如果它是从 SQL 而不是 PL/SQL 调用的函数,则限制为 4k,因为 SQL 中 VARCHAR2 的最大大小仅为 4k。

    这里是你的代码。

    CREATE OR REPLACE PROCEDURE SP_INSERT(
       p_date_now    IN DATE,
       p_user_id     IN NUMBER,
       p_summary     IN VARCHAR2 )
    is
    BEGIN 
    
    INSERT INTO SUMMARY_TABLE
              (
                id,
                date,
                user_id,
                summary_text
              )
          VALUES
              (
                SEQ_TBL_SUMMARY_ID.NEXTVAL,
                p_date_now,
                p_user_id,
                p_summary
              );
    
    END;
    

    【讨论】:

    • 这对我有用!感谢您。我来自 t-sql,有点不同
    猜你喜欢
    • 2013-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多