【问题标题】:Create stored procedure in Teradata from .net code从 .net 代码在 Teradata 中创建存储过程
【发布时间】:2021-02-23 07:07:02
【问题描述】:

我尝试使用 Teradata.Client.Provider 从 .NET 代码创建存储过程。

我使用了这样的查询:

"REPLACE PROCEDURE test_db.testproc() BEGIN END;"

所有代码:

...
    var connectionTd = new TdConnection("[ConnectionString]");
    var cmdTd = connectionTd.CreateCommand();
    cmdTd.CommandText = "REPLACE PROCEDURE test_db.testproc() BEGIN END;";
    connectionTd.Open();
    cmdTd.ExecuteNonQuery();
...

但我得到一个错误:

[Teradata Database] [3706] 语法错误:无效的 SQL 语句。

在像 dBeaver 这样的 IDE 中一切正常。

附: 来自this 页面的示例会导致相同的错误。

【问题讨论】:

  • 您在调用哪个方法?推荐的方法是cmd.ExecuteCreateProcedure。不知道为什么您链接的示例引用了cmd.ExecuteNonQuery
  • @Fred 这是一个很好的说明!如果您将其格式化为答案,我可以将其标记为正确!并告诉我文档在哪里说的......

标签: c# sql .net stored-procedures teradata


【解决方案1】:

感谢@Fred 能够找到解决方案!

调用而不是 ExecuteNonQuery() 就足够了 -> ExecuteCreateProcedure()

...
    var connectionTd = new TdConnection("[ConnectionString]");
    var cmdTd = connectionTd.CreateCommand();
    cmdTd.CommandText = "REPLACE PROCEDURE test_db.testproc() BEGIN END;";
    connectionTd.Open();
    cmdTd.ExecuteCreateProcedure(true);
...

【讨论】:

  • 这记录在 TdCommand 类帮助条目(您引用的那个的父项)中。
猜你喜欢
  • 2020-09-25
  • 1970-01-01
  • 2016-12-11
  • 2017-02-27
  • 1970-01-01
  • 1970-01-01
  • 2020-06-04
  • 2011-08-31
  • 1970-01-01
相关资源
最近更新 更多