执行存储过程参数 存储sql 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 declareion_ret_code NUMBER(4);ios_note VARCHAR2(40);is_first_record VARCHAR2(40);beginion_ret_code:=2;--调用前赋值就行了bi_vc_check_account_main_p('hb_20091025.dz','2007-10-01 09:30:10,J2307100109301000001,01058500130,TELE,100.0',4000,ion_ret_code,ios_note, is_first_record);dbms_output.put_line(ion_ret_code);dbms_output.put_line(ios_note );dbms_output.put_line(is_first_record);end; 执行后报错,一开始提示我变量太小了,我改后出来这个错误,查找了半天没出个结果,请问错误出在哪里?ORA-06550: line 7, column 1:PLS-00905: object UNITELE.BI_VC_CHECK_ACCOUNT_MAIN_P is invalidORA-06550: line 7, column 1:PL/SQL: Statement ignored 重新编译一下这个procedure,注意如果是不同的用户,调用时加上存储过程的的属主用户名作为前缀 变量和OUTPUT参数定义要一致。VARCHAR2(40) 肯定不能匹配 VARCHAR2 默认4000的长度。 楼主你只到IN和OUT类型的参数的话,IN OUT就是包含这两种含义的一种参数格式,表示即使传入参数又是你在你所调用的存储过程中处理后的返回参数。 1、IN模式:只读。在模块里面,实参的数值只能被引用,而这个参数不能被改变。 2、OUT模式:只写。模块能够给这个参数进行赋值,但是这个参数的数值不能被引用。 3、IN OUT模式:可读写。这个模块的数值在模块内可被引用或改变。在调用in out类型时,调用过程插入参数时,不能直接用常量。必须用变量。这样才能接收out返回来的值。同理:用out的也不能直接用常量。楼主给的错可能是返回的值的长度大于定义的长度如4楼所说 DBMS_OUTPUT.PUT_LINE('======' || L_TEST_B_COUNT);这样打印到你的控制台。有关存储过程,看我写的博客,5分钟就能在项目上用了,包含里面各种知识点,你看看Oracle技术_5分钟会用存储过程_存储过程简单实例(包含循环、条件、增改查、参数传入、变量赋值、java调用等) 求oracle入门教材 关于临时表的问题。。。。。。。。 两段近似的SQL,执行情况却不大相同? 把一个oracle查询语句改成SQL的 oracle distinct ORACLE 方面高手注意了,我向你们提出挑战性的问题,此问题已经在多个论坛提出没有解决,不知.... windows的计算机名更改后,如何把ORACLE的主机名也相应更改过来? 如何判断变量是否是"123"结尾? 高手请进,在线等待! 为什么DBMS_SQL.EXECUTE()的返回值不正确? 重复数据的取值问题 orcal 多级分组问题,求解
ion_ret_code NUMBER(4);
ios_note VARCHAR2(40);
is_first_record VARCHAR2(40);
begin
ion_ret_code:=2;--调用前赋值就行了
bi_vc_check_account_main_p
(
'hb_20091025.dz',
'2007-10-01 09:30:10,J2307100109301000001,01058500130,TELE,100.0',
4000,
ion_ret_code,
ios_note,
is_first_record
);
dbms_output.put_line(ion_ret_code);
dbms_output.put_line(ios_note );
dbms_output.put_line(is_first_record);
end;
执行后报错,一开始提示我变量太小了,我改后出来这个错误,查找了半天没出个结果,请问错误出在哪里?ORA-06550: line 7, column 1:
PLS-00905: object UNITELE.BI_VC_CHECK_ACCOUNT_MAIN_P is invalid
ORA-06550: line 7, column 1:
PL/SQL: Statement ignored
VARCHAR2(40) 肯定不能匹配 VARCHAR2 默认4000的长度。
2、OUT模式:只写。模块能够给这个参数进行赋值,但是这个参数的数值不能被引用。
3、IN OUT模式:可读写。这个模块的数值在模块内可被引用或改变。
在调用in out类型时,调用过程插入参数时,不能直接用常量。必须用变量。这样才能接收out返回来的值。同理:用out的也不能直接用常量。
楼主给的错可能是返回的值的长度大于定义的长度如4楼所说
L_TEST_B_COUNT);
这样打印到你的控制台。有关存储过程,看我写的博客,5分钟就能在项目上用了,包含里面各种知识点,你看看Oracle技术_5分钟会用存储过程_存储过程简单实例(包含循环、条件、增改查、参数传入、变量赋值、java调用等)