日期:2014-05-17  浏览次数:20748 次

有关out的问题!在线等!!!!!!!!!!!
CREATE   OR   REPLACE   PROCEDURE   UP_CAUSER_GetMaxId(user_id_info   out   number)
is
  TempID   number;
  begin
  SELECT   max(user_id)+1   into   TempID   FROM   causer;
  IF   (TempID   IS   NULL)   then   user_id_info:=-1;
  else  
  user_id_info:=TempID;
  END   IF;
end;


这样的OUT参数为什么总在程序里报:“ORA-01036:   非法的变量名/编号”

------解决方案--------------------
这个存储过程表面上看没什么问题。
问题关键是你如何调用它的?


1 CREATE OR REPLACE PROCEDURE UP_CAUSER_GetMaxId(user_id_info out number)
2 is
3 TempID number;
4 begin
5 SELECT 1 into TempID FROM dual;
6 IF (TempID IS NULL) then user_id_info:=-1;
7 else
8 user_id_info:=TempID;
9 END IF;
10* end;
11 /

过程已创建。

SQL> set serveroutput on;
SQL> declare
2 id number;
3 begin
4 up_causer_getmaxid(id);
5 dbms_output.put_line(id);
6 end;
7 /
1

PL/SQL 过程已成功完成。

------解决方案--------------------
OracleDbType.Number大写的.
------解决方案--------------------
你在c#中调用出现的问题,问题不在oracle上
------解决方案--------------------
参数的名字是ReturnValue,是不是有问题呀?

ParameterDirection.ReturnValue?是应该是ParameterDirection.Output吧.

ParameterDirection.ReturnValue好像是给function用的吧。