首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用EL 6执行DB2大型机SP

使用EL 6执行DB2大型机SP
EN

Stack Overflow用户
提问于 2013-12-03 14:32:56
回答 1查看 144关注 0票数 1

我有一个带有以下参数的大型机SP

代码语言:javascript
复制
 IN "APPLCD            " "SYSIBM  "."CHAR"
  ,
   INOUT "CMCNAREA          " "SYSIBM  "."CHAR"
  ,
   OUT "RETURNCD          " "SYSIBM  "."INTEGER"
  ,
   OUT "MSG               " "SYSIBM  "."CHAR"

使用下面的连接字符串

代码语言:javascript
复制
<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代码下面确认一下吗?我将在获得服务器访问后执行它。

代码语言:javascript
复制
                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); 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-08 14:48:35

贾什。

从表面上看,它看起来很好(不确定星号是什么)。

但是,如果您使用的是Enterprise 6,那么所有这些代码都是不必要的。

您可能希望将项目配置为使用企业库配置编辑器(在Visual中:右键单击app.config或web.config/编辑配置文件v6)使用自定义数据库。

一旦配置了数据库提供程序,代码将如下所示:

代码语言:javascript
复制
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);
}

希望这能帮上忙

麦克

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20353940

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档