Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Stored procedures BLToolkit Oracle SP支持_Stored Procedures_C# 4.0_Oracle11g_Bltoolkit - Fatal编程技术网

Stored procedures BLToolkit Oracle SP支持

Stored procedures BLToolkit Oracle SP支持,stored-procedures,c#-4.0,oracle11g,bltoolkit,Stored Procedures,C# 4.0,Oracle11g,Bltoolkit,BLT是否支持Oracle存储过程?我尝试了许多方法,下面描述了如何让它工作,但没有运气。存储过程使用多个值更新表。这是存储过程,一个小的测试过程 DROP PROCEDURE BETA_AUTO_UPDATE; / CREATE OR REPLACE PROCEDURE BETA_AUTO_UPDATE ( AutoId IN NUMBER, Rule IN NVARCHAR2, Nam IN NVARCHAR2, Loc IN

BLT是否支持Oracle存储过程?我尝试了许多方法,下面描述了如何让它工作,但没有运气。存储过程使用多个值更新表。这是存储过程,一个小的测试过程

DROP PROCEDURE BETA_AUTO_UPDATE;
/

 CREATE OR REPLACE PROCEDURE BETA_AUTO_UPDATE
   (
      AutoId IN NUMBER,
      Rule  IN NVARCHAR2,  
      Nam  IN NVARCHAR2,
      Loc IN NVARCHAR2
   )
  IS
  BEGIN 

UPDATE Beta_Auto
SET RuleGuid = Rule,        
    Name = Nam,
    Location = Loc
WHERE Id=AutoId;

  EXCEPTION 
     WHEN OTHERS THEN 
         RAISE_APPLICATION_ERROR(-20001, 'ERROR OCCURED DURING UPDATE');


   END BETA_AUTO_UPDATE;
   /
尝试了以下方法

        DbManager.AddDataProvider(new OdpDataProvider());
        DbManager OracleDb = new DbManager("BetaOracleDBConn");

        Beta_Auto Betar = new Beta_Auto();
        Betar.ID = 1;
        Betar.Name = "Jim";
        Betar.RuleGuid = "jlDKDKDKDKDKDKp";
        Betar.Location = "LocDLDLDLDLDtor";

        OracleDb.SetSpCommand("Beta_Auto_UPDATE",       
        OracleDb.CreateParameters(Betar)).ExecuteNonQuery();
那没用

试过这个

        [ActionName("UPDATE")]
        public abstract void Update(Beta_Auto Auto);
那没用

          [SprocName("Beta_Auto_Update")]
          public abstract void UpdateByParam(int Id, string RuleGuid, string Name,  string Location);
我试过这个:

        [SprocName("Beta_Auto_Update")]
        public abstract void UpdateByParam(
        [Direction.InputOutput("ID", "RuleGuid", "Name", "Location")] Beta_Auto Auto);
[ActionName("Update")]
public abstract void UpdateByParam(int Id, string RuleGuid, string Name, string Location);
那没用

          [SprocName("Beta_Auto_Update")]
          public abstract void UpdateByParam(int Id, string RuleGuid, string Name,  string Location);
我也试过:

        [SprocName("Beta_Auto_Update")]
        public abstract void UpdateByParam(
        [Direction.InputOutput("ID", "RuleGuid", "Name", "Location")] Beta_Auto Auto);
[ActionName("Update")]
public abstract void UpdateByParam(int Id, string RuleGuid, string Name, string Location);
那没用

          [SprocName("Beta_Auto_Update")]
          public abstract void UpdateByParam(int Id, string RuleGuid, string Name,  string Location);
将odp.net上的跟踪级别设置为7。看到正在进行呼叫,但看不到任何参数。将XE(由于db比5GB大,所以可能会出现许可问题)换成企业级Oracle。没用

          [SprocName("Beta_Auto_Update")]
          public abstract void UpdateByParam(int Id, string RuleGuid, string Name,  string Location);
创建一个新用户、数据文件、表空间,并为其分配所有角色和权限,包括向用户执行任何过程。没用

          [SprocName("Beta_Auto_Update")]
          public abstract void UpdateByParam(int Id, string RuleGuid, string Name,  string Location);
我运行了一个标准的ado.net(非常冗长)来通过
OracleCommand
调用存储过程,它完美地调用并完成了更新

我被难住了。以上所有工作都适用于SQL Server

谢谢。 范围蠕变

我正在像这样做

        var parameters = OracleDb.GetSpParameters("BETA_AUTO_UPDATE", true, true);

        parameters.SetParamValue("pParam1", param1);
        parameters.SetParamValue("pParam2", param2);
        ...

        OracleDb.SetSpCommand("BETA_AUTO_UPDATE", parameters).ExecuteNonQuery();

这是一个额外的往返过程,但因为我只使用存储过程进行几次大批量更新,所以这并不重要(正常/简单的更新是通过Linq DML操作完成的)

不完全理解您的问题GetsParameters->调用DB以获取存储过程SetSpCommand(…)的参数集合.ExecuteOnQuery()->调用数据库,设置参数集合并在站点上执行存储过程->您还可以使用它检查您创建的参数集合是否正确我使用了OracleDb.SetSpCommand(“Beta_Auto_UPDATE”,OracleDb.CreateParameters(Betar)).ExecuteOnQuery();我想知道,您是否使用过Oracle的功能。它无法让它与Oracle协同工作,但与Sql Server的协同工作仍然完美无缺。任何想法。我想问的是,你有没有设法得到sp的返回游标?上下快速移动