我有一个带有以下参数的大型机SP
IN "APPLCD " "SYSIBM "."CHAR"
,
INOUT "CMCNAREA " "SYSIBM "."CHAR"
,
OUT "RETURNCD " "SYSIBM "."INTEGER"
,
OUT "MSG " "SYSIBM "."CHAR"使用下面的连接字符串
<add name="name" connectionString="Driver={IBM DB2 ODBC DRIVER};Database=DBName;Hostname=IP;Port=port;Protocol=TCPIP;Uid=uid;Pwd=pwd;" providerName="System.Data.Odbc" />我假设参数类型和名称在C#和SP之间没有正确映射。有人能在.NET代码下面确认一下吗?我将在获得服务器访问后执行它。
var AD1107P_APPCD = command.CreateParameter();
AD1107P_APPCD.Direction = ParameterDirection.InputOutput;
**AD1107P_APPCD.DbType = DbType.String;**
AD1107P_APPCD.ParameterName = "AD1107P_APPCD";
AD1107P_APPCD.Size = 8;
AD1107P_APPCD.Value = samParm;
command.Parameters.Add(AD1107P_APPCD);
var AD1107P_COMMAREA = command.CreateParameter();
AD1107P_COMMAREA.Direction = ParameterDirection.InputOutput;
**AD1107P_COMMAREA.DbType = DbType.String;**
AD1107P_COMMAREA.ParameterName = "AD1107P_COMMAREA";
AD1107P_COMMAREA.Size = 200;
AD1107P_COMMAREA.Value = "OT";
command.Parameters.Add(AD1107P_COMMAREA);
var AD1107P_RC = command.CreateParameter();
AD1107P_RC.Direction = ParameterDirection.Output;
**AD1107P_RC.DbType = DbType.Int32;**
AD1107P_RC.ParameterName = "AD1107P_RC";
command.Parameters.Add(AD1107P_RC);
var AD1107P_MESSAGE = command.CreateParameter();
AD1107P_MESSAGE.Direction = ParameterDirection.Output;
AD1107P_MESSAGE.DbType = DbType.String;
AD1107P_MESSAGE.ParameterName = "AD1107P_MESSAGE";
AD1107P_MESSAGE.Size = 128;
command.Parameters.Add(AD1107P_MESSAGE); 发布于 2014-05-08 14:48:35
贾什。
从表面上看,它看起来很好(不确定星号是什么)。
但是,如果您使用的是Enterprise 6,那么所有这些代码都是不必要的。
您可能希望将项目配置为使用企业库配置编辑器(在Visual中:右键单击app.config或web.config/编辑配置文件v6)使用自定义数据库。
一旦配置了数据库提供程序,代码将如下所示:
var db = new DatabaseProviderFactory().Create("the_name_you_gave_your_connection_string");
using (var cmd = db.GetStoredProcCommand("sp_name"))
{
db.DiscoverParameters(cmd);
// Set the parameter values either directly or through an IParameterMapper or an accessor.
// Here's an example of setting them directly:
cmd.Parameters["@P1"].Value = "some value";
// if you want to retrieve a DataSet:
using (var ds = db.ExecuteDataSet(cmd))
{
// ... do something with the returned data.
}
// If you just want to call the stored procedure:
db.ExecuteNonQuery(cmd);
}希望这能帮上忙
麦克
https://stackoverflow.com/questions/20353940
复制相似问题