下面这个是我的存储过程:
create or replace procedure aj_songdahuizheng_insert(--创建(修改)存储过程
s_xtajbh nvarchar2,--输入变量
s_ssdr nvarchar2,
s_wsmcjs nvarchar2,
s_sddd nvarchar2,
s_ssdrqm nvarchar2,
s_sdrq nvarchar2,
s_sdr nvarchar2,
s_bz nvarchar2,
s_zltz number,
s_sxgz number,
s_tzgz number,
s_cljd number,
o_res out number--输出变量,这里的out参数在存储过程中必须给他赋值,否则存储过程编译出错。
)isbegin
--添加
insert into aj_songdahuizheng values(s_xtajbh,s_ssdr,s_wsmcjs,s_sddd,s_ssdrqm,s_sdrq,s_sdr,s_bz,s_zltz,s_sxgz,s_tzgz,s_cljd);
o_res := 1;--给输出参数赋值,增加返回值(此操作必须在过程中执行)
COMMIT;--增加事务控制
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
o_res := 0;
end aj_songdahuizheng_insert;
已经测试了,没有错。
再下面是我的dal层中的一个添加的方法的(访问存储过程的)
public static int Add(ZFJC.Model.AJ_SONGDAHUIZHENG model)
{ OracleParameter[] dpara = new OracleParameter[] {
new OracleParameter("s_xtajbh",model.Xtajbh),
new OracleParameter("s_ssdr",model.Ssdr),
new OracleParameter("s_wsmcjs",model.Wsmcjs),
new OracleParameter("s_sddd",model.Sddd),
new OracleParameter("s_ssdrqm",model.Ssdrqm),
new OracleParameter("s_sdrq",model.Sdrq),
new OracleParameter("s_sdr",model.Sdr),
new OracleParameter("s_bz",model.Bz),
new OracleParameter("s_zltz",model.Zltz),
new OracleParameter("s_sxgz",model.Sxgz),
new OracleParameter("s_tzgz",model.Tzgz),
new OracleParameter("s_cljd",model.Cljd)
//这里是不是少了一个输出参数啊?
};
return DbHelperOra.RunProcedure("aj_songdahuizheng_insert", dpara); }
出现的错误是:参数类型或个数不对
我总是感觉我的这个方法不正规,有没有类似的,而又比我的好的。给我一个
create or replace procedure aj_songdahuizheng_insert(--创建(修改)存储过程
s_xtajbh nvarchar2,--输入变量
s_ssdr nvarchar2,
s_wsmcjs nvarchar2,
s_sddd nvarchar2,
s_ssdrqm nvarchar2,
s_sdrq nvarchar2,
s_sdr nvarchar2,
s_bz nvarchar2,
s_zltz number,
s_sxgz number,
s_tzgz number,
s_cljd number,
o_res out number--输出变量,这里的out参数在存储过程中必须给他赋值,否则存储过程编译出错。
)isbegin
--添加
insert into aj_songdahuizheng values(s_xtajbh,s_ssdr,s_wsmcjs,s_sddd,s_ssdrqm,s_sdrq,s_sdr,s_bz,s_zltz,s_sxgz,s_tzgz,s_cljd);
o_res := 1;--给输出参数赋值,增加返回值(此操作必须在过程中执行)
COMMIT;--增加事务控制
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
o_res := 0;
end aj_songdahuizheng_insert;
已经测试了,没有错。
再下面是我的dal层中的一个添加的方法的(访问存储过程的)
public static int Add(ZFJC.Model.AJ_SONGDAHUIZHENG model)
{ OracleParameter[] dpara = new OracleParameter[] {
new OracleParameter("s_xtajbh",model.Xtajbh),
new OracleParameter("s_ssdr",model.Ssdr),
new OracleParameter("s_wsmcjs",model.Wsmcjs),
new OracleParameter("s_sddd",model.Sddd),
new OracleParameter("s_ssdrqm",model.Ssdrqm),
new OracleParameter("s_sdrq",model.Sdrq),
new OracleParameter("s_sdr",model.Sdr),
new OracleParameter("s_bz",model.Bz),
new OracleParameter("s_zltz",model.Zltz),
new OracleParameter("s_sxgz",model.Sxgz),
new OracleParameter("s_tzgz",model.Tzgz),
new OracleParameter("s_cljd",model.Cljd)
//这里是不是少了一个输出参数啊?
};
return DbHelperOra.RunProcedure("aj_songdahuizheng_insert", dpara); }
出现的错误是:参数类型或个数不对
我总是感觉我的这个方法不正规,有没有类似的,而又比我的好的。给我一个
par.Direction =ParameterDirection.Output;
new OracleParameter("s_xtajbh",model.Xtajbh),
new OracleParameter("s_ssdr",model.Ssdr),
new OracleParameter("s_wsmcjs",model.Wsmcjs),
new OracleParameter("s_sddd",model.Sddd),
new OracleParameter("s_ssdrqm",model.Ssdrqm),
new OracleParameter("s_sdrq",model.Sdrq),
new OracleParameter("s_sdr",model.Sdr),
new OracleParameter("s_bz",model.Bz),
new OracleParameter("s_zltz",model.Zltz),
new OracleParameter("s_sxgz",model.Sxgz),
new OracleParameter("s_tzgz",model.Tzgz),
new OracleParameter("s_cljd",model.Cljd)
new OracleParameter("o_res",model.Cljd)
};
dpara[12].Direction = ParameterDirection.Output;
par.Direction = ParameterDirection.Output;都差不多ParameterDirection.Output这句别忘了
opr[12].Direction = ParameterDirection.Output;
opr[12].Value = BZ;
输出参数还需要设置param.Direction = ParameterDirection.Output;
现在还是有错
ORA-06550: 第 1 行, 第 23 列:
PLS-00222: 在此范围中不存在名为 'AJ_SONGDAHUIZHENG_INSERT' 的函数
ORA-06550: 第 1 行, 第 7 列:
PL/SQL: Statement ignored
怎么回事啊?
可能存储过程名太长了,改短点试试?
现在还是有错
ORA-06550: 第 1 行, 第 23 列:
PLS-00222: 在此范围中不存在名为 'AJ_SONGDAHUIZHENG_INSERT' 的函数
ORA-06550: 第 1 行, 第 7 列:
PL/SQL: Statement ignored怎么回事啊?
现在还是有错
ORA-06550: 第 1 行, 第 23 列:
PLS-00222: 在此范围中不存在名为 'AJ_SONGDAHUIZHENG_INSERT' 的函数
ORA-06550: 第 1 行, 第 7 列:
PL/SQL: Statement ignored怎么回事啊?