gpt4 book ai didi

c# - 在 EntityFramework 中执行 Oracle 存储过程

转载 作者:太空狗 更新时间:2023-10-30 00:24:22 25 4
gpt4 key购买 nike

长话短说:我正在尝试在 Entity Framework 中运行 Oracle 存储过程(我知道这听起来很奇怪,但在一般应用程序中使用 Entity Framework 但由于限制,EF 无法处理此特定命令在修改键的值)。

程序有一些参数(只有 IN)并更新表中的值。我通过运行对其进行了测试:

execute PROCEDURE_NAME('parameter1', parameter2 etc.);

它工作正常。

我的参数定义如下:

OracleParameter param1 = new OracleParameter("PARAM1", OracleDbType.Varchar2, changed.PARAM1, ParameterDirection.Input);

object[] parameters = new object[] {
param1,...};

我的查询是:

string query = "execute PROCEDURE_NAME(:PARAM1,...);";

我正在尝试从 C# 代码执行它。即通过运行:

_context.Database.ExecuteSqlCommand(query, parameters);

我收到错误 ORA-00900:原因:该语句未被识别为有效的 SQL 语句。如果未安装 Procedural Option 并且发出了需要此选项的 SQL 语句(例如,CREATE PROCEDURE 语句),则会发生此错误。您可以通过启动 SQL*Plus 来确定是否安装了 Procedural Option。如果未显示 PL/SQL 横幅,则表示未安装该选项。

我认为缺少程序选项不能成为原因,因为在控制台中创建和运行程序是可行的。

不幸的是,我的工具不提供探查器,因此我无法捕获 Entity Framework 生成的查询。还有其他方法可以获取执行的查询吗?或者,也许您可​​以看到我的代码有任何问题?

最佳答案

试试这个查询字符串:

string query = "begin PROCEDURE_NAME(:PARAM1,...); end; ";

关于c# - 在 EntityFramework 中执行 Oracle 存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26273638/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com