【问题标题】:Executing Macro in Teradata .net C#在 Teradata .net C# 中执行宏
【发布时间】:2017-12-14 12:03:19
【问题描述】:

我正在尝试将宏/存储过程从 Teradata 执行到我的 .Net 网站。

我的 CS 代码如下所示 -

 public void Page_Load(object sender, EventArgs e)
    {

        TdConnectionStringBuilder connectionStringBuilder = new TdConnectionStringBuilder();
        connectionStringBuilder.DataSource = "URL";
        connectionStringBuilder.Database = "DB";
        connectionStringBuilder.UserId = "USERNAME";
        connectionStringBuilder.Password = "PASSWORD";
        connectionStringBuilder.AuthenticationMechanism = "LDAP";

        using (TdConnection cn = new TdConnection())
        {
            cn.ConnectionString = connectionStringBuilder.ConnectionString;
            cn.Open();

            TdCommand cmd = cn.CreateCommand();
            cmd.CommandText = "EXEC DB.TEST";


            using (TdDataReader reader = cmd.ExecuteReader())
            {

                MeanTime.Text = "Value is " + reader.Read();
            }
        }

    }

我的另一个尝试是

cmd.CommandText = "EXEC TMP_WORK_DB.SH_TEST";
string scalar = (string)cmd.executescalar();
 meantime.text = scalar;

我的 HTML 端

 <asp:Label ID="MeanTime" runat="server" Text="MeanTime"></asp:Label>

宏 DB.TEST 只返回一个值而不是一行。 上面的代码失败了。我怀疑我需要将值插入数据集中,但我不知道 Teradata 语法

编辑 - 上面的代码失败 - 在 Chrome 上执行时,Visual Studio 挂起。关闭 Chrome 后,它会突出显示 CMD(编辑器中的代码)并保持挂起状态,直到强制关闭。

我指的是.Net Developer Guide for Teradata 和这个TD Guide page

【问题讨论】:

  • “上述代码失败” - 阅读 How to Ask 并解释它是如何失败的,以及您尝试解决的问题。

标签: c# asp.net .net macros teradata


【解决方案1】:

我很确定你用错了reader.Read()。根据您的帮助链接 (https://developer.teradata.com/doc/connectivity/tdnetdp/16.20/help/Teradata.Client.Provider~Teradata.Client.Provider.TdDataReader.html),它应该是:

var reader = cmd.ExecuteReader();
while(reader.Read())
{
    //assuming you have only one column and one row.
    //otherwise it would overwrite your Text property with the next
    //row in line
    MeanTime.Text = "Value is " + reader.GetValue(0);
}

这与默认DataReader的用法和行为基本相同:https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/retrieving-data-using-a-datareader

【讨论】:

  • 获取 Teradata.Client.Provider.TdException: '外部组件已引发异常。' on var reader = cmd.ExecuteReader();
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-05-12
  • 2014-02-06
  • 1970-01-01
  • 2016-11-11
  • 2012-12-03
  • 1970-01-01
  • 2020-05-31
相关资源
最近更新 更多