怎样判断存储过程是否执行成功 可以通过判断flag的值来判断存储过程是不是成功,你的存储过程哪里不行啊? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我是通过它呀,我执行存储过程时,有4个in,一个out的,可是运行时就报错,去掉out就好使,可以给个demo吗,有out参数的,谢谢我的本意也是根据flag来的,可是运行报错下面是运行结果SQL> exec dealbill1 ('EC0006','20010101','20060101',8);BEGIN dealbill1 ('EC0006','20010101','20060101',8); END; *ERROR 位于第 1 行:ORA-06550: 第 1 行, 第 7 列:PLS-00306: 调用 'DEALBILL1' 时参数个数或类型错误ORA-06550: 第 1 行, 第 7 列:PL/SQL: Statement ignored怎么办呀 demo:CREATE OR REPLACE PROCEDURE Fun_Get_Diff ( ais_str1 IN VARCHAR2, ais_str2 IN VARCHAR2, aos_same OUT VARCHAR2, aos_diff1 OUT VARCHAR2, aos_diff2 OUT VARCHAR2)/******************************************************** * 名称:fun_get_diff * * 说明:比较两个字符串同位置的差异 * * 作者:coco * * 创建日期: 2005年05月26日 16:37:30 * * 输入参数: * * ais_str1 输入字符串1 * * ais_str2 输入字符串2 * * 输出参数: * * aos_same 两个字符串中的相同部分。 * * aos_diff1 字符串1(ais_str1)中的不同部分 * * aos_diff2 字符串1(ais_str2)中的不同部分 * *********************************************************/ASvi_len1 NUMBER(40);vi_len2 NUMBER(40);vi_len NUMBER(40);vi_circle NUMBER(40); vs_str1 VARCHAR2(100);vs_str2 VARCHAR2(100); BEGIN vi_len1 := NVL(LENGTH(ais_str1),0); vi_len2 := NVL(LENGTH(ais_str2),0); vi_len := LEAST(vi_len1,vi_len2); aos_same:=(CASE WHEN vi_len1 = vi_len THEN ais_str1 ELSE ais_str2 END); aos_diff1:=''; aos_diff2:=''; FOR vi_circle IN 1 .. vi_len LOOP vs_str1:=SUBSTR(ais_str1,vi_circle,1); vs_str2:=SUBSTR(ais_str2,vi_circle,1); IF vs_str1 != vs_str2 THEN aos_same := SUBSTR(ais_str1,1,vi_circle-1); aos_diff1 := SUBSTR(ais_str1,vi_circle); aos_diff2 := SUBSTR(ais_str2,vi_circle); RETURN; END IF; END LOOP; RETURN; END; SQL> exec dealbill1 ('EC0006','20010101','20060101',8);-----你要定义返回值sql>var outflag numbersql>exec dealbill1 ('EC0006','20010101','20060101',8,:outflag);sql>print outflag 存储过程 IF....THEN 的问题 oracle数据库同时导给两个数据库用户 介绍本pl/sql的书 大家好,高分请教一个Java工程连接 oracle9i 数据库的问题,急! sqlldr 如何把一个文件导入到2张表中 Oracle 插入日期时,提示'文字与格式字符串不匹配' 各位大侠,ORACLE配置问题请教 想学Oracle Oracle在查询语句中以半年分组怎么分 (10)菜鸟问题!!容易拿分!! 用wrap加密包体出错,请各位大虾帮忙,急!急!急! 如果用命令启动OracleOraHome90TNSListenerXXXXX,OracleServiceYYYYY这两个服务呢?
SQL> exec dealbill1 ('EC0006','20010101','20060101',8);
BEGIN dealbill1 ('EC0006','20010101','20060101',8); END; *
ERROR 位于第 1 行:
ORA-06550: 第 1 行, 第 7 列:
PLS-00306: 调用 'DEALBILL1' 时参数个数或类型错误
ORA-06550: 第 1 行, 第 7 列:
PL/SQL: Statement ignored怎么办呀
CREATE OR REPLACE PROCEDURE Fun_Get_Diff (
ais_str1 IN VARCHAR2,
ais_str2 IN VARCHAR2,
aos_same OUT VARCHAR2,
aos_diff1 OUT VARCHAR2,
aos_diff2 OUT VARCHAR2
)
/********************************************************
* 名称:fun_get_diff *
* 说明:比较两个字符串同位置的差异 *
* 作者:coco *
* 创建日期: 2005年05月26日 16:37:30 *
* 输入参数: *
* ais_str1 输入字符串1 *
* ais_str2 输入字符串2 *
* 输出参数: *
* aos_same 两个字符串中的相同部分。 *
* aos_diff1 字符串1(ais_str1)中的不同部分 *
* aos_diff2 字符串1(ais_str2)中的不同部分 *
*********************************************************/
AS
vi_len1 NUMBER(40);
vi_len2 NUMBER(40);
vi_len NUMBER(40);
vi_circle NUMBER(40);
vs_str1 VARCHAR2(100);
vs_str2 VARCHAR2(100); BEGIN
vi_len1 := NVL(LENGTH(ais_str1),0);
vi_len2 := NVL(LENGTH(ais_str2),0);
vi_len := LEAST(vi_len1,vi_len2);
aos_same:=(CASE
WHEN vi_len1 = vi_len
THEN ais_str1
ELSE ais_str2
END);
aos_diff1:='';
aos_diff2:='';
FOR vi_circle IN 1 .. vi_len LOOP
vs_str1:=SUBSTR(ais_str1,vi_circle,1);
vs_str2:=SUBSTR(ais_str2,vi_circle,1);
IF vs_str1 != vs_str2 THEN
aos_same := SUBSTR(ais_str1,1,vi_circle-1);
aos_diff1 := SUBSTR(ais_str1,vi_circle);
aos_diff2 := SUBSTR(ais_str2,vi_circle);
RETURN;
END IF;
END LOOP;
RETURN;
END;
-----
你要定义返回值
sql>var outflag number
sql>exec dealbill1 ('EC0006','20010101','20060101',8,:outflag);
sql>print outflag