存储过程的定义部分如下:
create or replace function fun_T_mete_realtime_ave(sta in number,
col_name in varchar2,date_now in varchar2) return number is
Result_ave number;
temp_var varchar2 (1000);
begin
.
.
.
end fun_T_mete_realtime_ave;vb.net调用语句(数据库已经连接):
Dim Cmd1 As New System.Data.OleDb.OleDbCommand
Cmd1.CommandType = CommandType.StoredProcedure
Cmd1.CommandText = "fun_T_mete_realtime_ave"
Cmd1.Parameters.Add("sta", OleDb.OleDbType.Integer).Value = CInt(station(b))
Cmd1.Parameters.Add("col_name", OleDb.OleDbType.VarChar, 200).Value = "V10004" Cmd1.Parameters.Add("date_now", OleDb.OleDbType.VarChar).Value = ndate.ToString '日期
Cmd1.Parameters.Add("Result_ave", OleDb.OleDbType.Double)
Cmd1.Parameters("Result_ave").Direction = ParameterDirection.ReturnValue
Cmd1.Connection = con
Cmd1.ExecuteNonQuery()
MsgBox(Cmd1.Parameters("Result_ave").Value)执行到Cmd1.ExecuteNonQuery(),错误是参数个数或类型错误,
我是3个输入,一个输出。谁能告诉我参数怎么传错了?
create or replace function fun_T_mete_realtime_ave(sta in number,
col_name in varchar2,date_now in varchar2) return number is
Result_ave number;
temp_var varchar2 (1000);
begin
.
.
.
end fun_T_mete_realtime_ave;vb.net调用语句(数据库已经连接):
Dim Cmd1 As New System.Data.OleDb.OleDbCommand
Cmd1.CommandType = CommandType.StoredProcedure
Cmd1.CommandText = "fun_T_mete_realtime_ave"
Cmd1.Parameters.Add("sta", OleDb.OleDbType.Integer).Value = CInt(station(b))
Cmd1.Parameters.Add("col_name", OleDb.OleDbType.VarChar, 200).Value = "V10004" Cmd1.Parameters.Add("date_now", OleDb.OleDbType.VarChar).Value = ndate.ToString '日期
Cmd1.Parameters.Add("Result_ave", OleDb.OleDbType.Double)
Cmd1.Parameters("Result_ave").Direction = ParameterDirection.ReturnValue
Cmd1.Connection = con
Cmd1.ExecuteNonQuery()
MsgBox(Cmd1.Parameters("Result_ave").Value)执行到Cmd1.ExecuteNonQuery(),错误是参数个数或类型错误,
我是3个输入,一个输出。谁能告诉我参数怎么传错了?
解决方案 »
- 【难题】如何将叶子节点的数据合计到父节点
- ORACLE插入数据number型时出现错误
- 在线等待_在触发器在能不能操作另一个表空间中的表
- 关于一条SQL语句--------------------------------------
- 为什么会这样(jsp访问oracle)
- 希望在数据库中新建一用户,并且该用户只能访问指定的几个表!如何创建该用户??
- 请介绍一些好的oracle查询工具(有比较好的查看,导入导出,剪切粘贴,更新的功能)
- Oracle8.17为什么不能安装?在线等待。。。
- oracle中的存储过程的问题,紧急求救!
- 请教Oracle高手,在下初学,想请问Oracle9i能装在Win2000Server版下吗?
- oracle 10G TNS:协议适配器错误
- oracle修改角色口令
MsgBox(Cmd1.Parameters("Result_ave").Value)
什么也没有显示出来,请问怎么显示我的结果,是我这么写不对吗?
dim sta as string
dim col_name as string
dim date_now as string
然后执行下面的语句
"select fun_T_mete_realtime_ave('"+sta+"', '"+col_name+"','"+date_now+"') from dual"
Cmd1.CommandText = "select fun_T_mete_realtime_ave('"+sta+"', '"+col_name+"','"+date_now+"') from dual" '这里应该是这个
你说的是直接执行select,但是我函数已经写好并且编译了,现在要调用函数啊
再说sta是number型的
"select fun_T_mete_realtime_ave('+CStr(sta)+', '"+col_name+"','"+date_now+"') from dual"函数就是这样使用的
怎么会是tostring呢
vb.net里面定义的integer类型可以传给存储函数里的number类型吗?
cmdCommand.Parameters.Add(New OleDb.OleDbParameter("sta", OleDb.OleDbType.VarNumeric, 10, ParameterDirection.Input, False, 0, 0, "", DataRowVersion.Current, 111111))
--输出参数类似
Dim myParam = New OleDb.OleDbParameter("xxx", OleDb.OleDbType.VarNumeric, 0)
myParam.Direction = ParameterDirection.Output
cmdCommand.Parameters.Add(myParam)
http://www.dotnetspider.com/qa/Question8532.aspx
With con
.ConnectionString = "Provider=OraOLEDB.Oracle;Password=a;User ID=a;Data Source=pname;Persist Security Info=false;"
.Open()
End With 发现OleDb.OleDbType类型中并不完全和oracle类型吻合。比如没有number类型,所以我只好选择了Integer
不知道是不是因为这个导致类型不一致?我该怎么解决啊?