带企业库的参数化oracle查询

带企业库的参数化oracle查询,oracle,c#-3.0,enterprise-library,Oracle,C# 3.0,Enterprise Library,我的.cs文件包含以下代码 DbCommand dbc = db.GetStoredProcCommand( string.Format(ConfigurationSettings.AppSettings["INSERT_TBLREPORTTYPE"] , rtype, zoneid, name)); 我在web.cofig中的查询是: <add key="INSERT_TBLREPORTTYPE" value="INS

我的.cs文件包含以下代码

DbCommand dbc = 
    db.GetStoredProcCommand(
        string.Format(ConfigurationSettings.AppSettings["INSERT_TBLREPORTTYPE"]
                , rtype, zoneid, name));
我在web.cofig中的查询是:

<add key="INSERT_TBLREPORTTYPE" 
    value="INSERT INTO TBLREPORT(ID,TYPE,RELATIONID,ISACTIVE,NAME)    
            VALUES(SEQ_REPORT.NEXTVAL,{0},{1},0,{2}) "/>
而且

dbc.Parameters[0].DbType = DbType.String;
dbc.Parameters[0].Value = name;
dbc.Parameters[1].DbType = DbType.Int32;
dbc.Parameters[1].Value = zoneid;
dbc.Parameters[2].DbType = DbType.String;
dbc.Parameters[2].Value = rtype;

他们都没有工作。有人能给我一些建议吗???

Oracle的参数前缀是
。因此,您应该将SQL更改为:

<add key="INSERT_TBLREPORTTYPE" 
    value="INSERT INTO TBLREPORT(ID, TYPE, RELATIONID, ISACTIVE, NAME)    
           VALUES(SEQ_REPORT.NEXTVAL, :TYPE, :RELATIONID, 0, :NAME) "/>

解释“它们都不起作用…”你是否会遇到像ORA-???这样的错误?发生了什么?{“此OracleParameterCollection的索引0无效,计数为0”。}System.IndexOutofrangeException我认为参数应该是@NAME、@RELATIONID、@TYPE,而不是{0}、{1}、{2}上面的任何方法…即db.addinParametere和dbc.Parameter[int index]
<add key="INSERT_TBLREPORTTYPE" 
    value="INSERT INTO TBLREPORT(ID, TYPE, RELATIONID, ISACTIVE, NAME)    
           VALUES(SEQ_REPORT.NEXTVAL, :TYPE, :RELATIONID, 0, :NAME) "/>
db.AddInParameter(dbc, ":NAME", DbType.String, name);