【问题标题】:Why does this SQL stored procedure not work?为什么这个 SQL 存储过程不起作用?
【发布时间】:2013-07-31 11:36:22
【问题描述】:

这是程序:

create or replace
PROCEDURE INSERTUSER(
       username IN USERS.USERNAME%TYPE,
     password IN USERS.PASSWORD%TYPE,
       firstname IN USERS.FIRSTNAME%TYPE,
       lastname IN USERS.LASTNAME%TYPE,
     role IN USERS.ROLE%TYPE,
     banstatus IN USERS.BANSTATUS%TYPE,
     verifystatus IN USERS.VERIFYSTATUS%TYPE)
AS
BEGIN

  INSERT INTO USERS ("USERNAME", "PASSWORD", "FIRSTNAME", "LASTNAME", "ROLE", "BANSTATUS", "VERIFYSTATUS") 
  VALUES (username, password, firstname, lastname, role, banstatus, verifystatus);

  COMMIT;

END;

当我尝试在 OracleSQL 中调用它时:

call INSERTUSER(Dean, pass1, Bob, Smith, Admin, 0, 1)

我收到错误消息:

Error starting at line 1 in command:
call INSERTUSER(Dean, pass1, Bob, Smith, Admin, 0, 1)
Error report:
SQL Error: ORA-06576: not a valid function or procedure name
06576. 00000 -  "not a valid function or procedure name"
*Cause:    Could not find a function (if an INTO clause was present) or
           a procedure (if the statement did not have an INTO clause) to
           call.
*Action:   Change the statement to invoke a function or procedure

你们能发现任何明显的错误/问题吗?我不确定我是否收到此错误消息..

【问题讨论】:

  • 发现问题!调用函数时必须使用单引号而不是双引号!

标签: sql oracle stored-procedures call procedure


【解决方案1】:

你可以这样调用你的程序:

begin
   INSERTUSER('Dean', 'pass1', 'Bob', 'Smith', 'Admin', 0, 1);
end;

【讨论】:

    【解决方案2】:

    找到问题了!调用函数时必须使用单引号而不是双引号!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-10
      • 2012-03-15
      • 2013-08-01
      • 1970-01-01
      • 2016-11-11
      • 2020-08-19
      相关资源
      最近更新 更多