你先在sql/pl里面看看你过程能不能得到你的值
然后调用,这样一般不会出错的。
然后调用,这样一般不会出错的。
解决方案 »
- treeview 如何去掉"+" 和 "-"的图标
- 如何让一个层永远处在另一个位置会发生变化的层(动态生成)的上方10px的地方???????????????
- 未将对象引用设置到对象的实例。
- 一个页面include次数太多,是否影响性能?
- utf-8 与gb2312的怪问题,请高手出招!!!
- 如何向动态生成的表格(HtmlControls.HtmlTable,不是DataGrid)中添加超链接?
- 急~怎么隐藏DataGrid的列?
- 大家帮忙都有分,proccess执行exe文件的问题
- 在.net中如何使记录一条一条往下滚
- 如何在程式中動態的加入一個Control后再實例化后顯示出來
- 初级问题:请问如何用c#判断客户端C:\temp\test.doc文件已经存在?wait--在线
- 我已经下载了IEWebControls 已经安装,在.NET中为什么找不到它?
存储过程在sql/pl Out出来的值是正确的
在上述的函数中,
Dim P_reader As OleDbDataReader = CmdRd.ExecuteReader(CommandBehavior.CloseConnection) --这应该没错吧
为什么一直not reader.read()??哭
'存储过程返回值
Dim ConnVw As OleDbConnection
Dim CmdRd As OleDbCommand
Dim CmdVw, Dadt As OleDbDataAdapter
Dim Ds As DataSet
Dim ConnStr As String = "Provider=MSDAORA.1;Persist Security Info=False;Password=dowell98168;User ID=dw_transuser;"
Dim index As String Dim Fi_i, Fi_Length As Integer
Dim F_CmdParaName
Dim F_TmpString, Fs_Name, Fs_Type, Fs_value As String
Dim ConnRd As OleDbConnection = New OleDbConnection(ConnStr)
CmdRd = New OleDbCommand(ProceName, ConnRd)
CmdRd.CommandType = CommandType.StoredProcedure
Dim fs_temp, fs_style, fs_temp2, f_dbtype
If ParaString <> "" Then
fs_temp = Split(ParaString, "$")
For Fi_i = 0 To UBound(fs_temp)
fs_temp2 = Split(fs_temp(Fi_i), "*")
Fs_Name = fs_temp2(0)
Fs_Type = fs_temp2(1)
Fi_Length = fs_temp2(2)
Fs_value = fs_temp2(3)
fs_style = fs_temp2(4)
Response.Write(fs_style & "**<BR>")
Select Case UCase(Fs_Type) '目前先列举以下两种
Case "CHAR"
Fs_Type = OleDbType.VarChar
f_dbtype = OleDbType.VarChar
Case "INT"
Fs_Type = OleDbType.Integer
f_dbtype = OleDbType.Integer
Case "NUM"
Fs_Type = OleDbType.Numeric
f_dbtype = OleDbType.Numeric
Case "D"
Fs_Type = OleDbType.Date
f_dbtype = OleDbType.Date
End Select
F_CmdParaName = CmdRd.Parameters.Add(Fs_Name, f_dbtype, Fi_Length)
Select Case fs_style
Case "RETURN_VALUE"
F_CmdParaName.Direction = ParameterDirection.ReturnValue
Case "@InputParm"
F_CmdParaName.value = Fs_value
Case "@OutputParm"
F_CmdParaName.Direction = ParameterDirection.Output
End Select
'Response.Write(Fi_i.ToString & "<BR>")
Next
End If
ConnRd.Open()
Dim P_reader As OleDbDataReader = CmdRd.ExecuteReader(CommandBehavior.CloseConnection)
Response.Write(CmdRd.Parameters("adb_CreditFee3").Value & "@@@")
Response.Write(CmdRd.Parameters.Item(2).Value) '("ADB_CREDITFEE2").Value.ToString & "***")
If P_reader.Read() Then
Response.Write(P_reader.Item(0) & "***")
Else
Response.Write("<BR>ddddddddddddddddd")
End If
'P_reader.Close()
'return(CmdRd.ExecuteReader())
CmdRd.Dispose()
ConnRd.Close()
ConnRd.Dispose()
End Function
过程:
Create or Replace Procedure sp_temp
(
as_feename in char,
adb_name out char
)
is
Begin
adb_name := as_Feename;
End;
/
调用--
dim Ps_sql = "as_feename*char*30*wwwww@InputParm" + "$adb_name*char*30*0*@OutputParm"
P_reader = Sys_ProcCommandReturn("sp_GetGeneralFeePrice", Ps_sql)
此时,我希望得到的是adb_name的值, 请大家帮我看看
,我该如何改呢?
给你段代码,C#的
public System.Object TransferStoredPrucedure(Parameters[] parameter,string StoreName)
{
string outname="";
System.Data.OleDb.OleDbConnection cn=new OleDbConnection(connStr);
cn.Open();
System.Data.OleDb.OleDbCommand cm=new System.Data.OleDb.OleDbCommand();
cm.CommandText=StoreName;
cm.Connection=cn;
cm.CommandType=System.Data.CommandType.StoredProcedure;
System.Data.OleDb.OleDbParameterCollection oleParam=cm.Parameters;
foreach(Parameters pa in parameter)
{
System.Data.OleDb.OleDbParameter param=new System.Data.OleDb.OleDbParameter();
param.Value=pa.Value;
if(pa.ParameterDirection==System.Data.ParameterDirection.Output)
{
outname=pa.ParameterName;
}
param.Direction=pa.ParameterDirection;
param.OleDbType=pa.DbType;
try
{
param.Size=pa.Size;
}
catch
{ }
finally{}
param.ParameterName=pa.ParameterName;
oleParam.Add(param);
}
System.Data.OleDb.OleDbDataReader reader;
try
{
reader=cm.ExecuteReader();
reader.Close();
}
catch(Exception ex)
{}
finally
{
if(cn.State!=System.Data.ConnectionState.Closed)
{
cn.Close();
}
}
if(outname=="")
{
return "true";
}
else
{
return cm.Parameters[outname].Value;
}
}[System.Serializable]public class Parameters
{
public string ParameterName="";
public System.Data.OleDb.OleDbType DbType;
public System.Object Value;
public int Size;
public System.Data.ParameterDirection ParameterDirection;
}