当前位置: 首页 > 工具软件 > BLToolkit > 使用案例 >

oracle bl编译,存储过程 – BLToolkit Oracle SP支持

长孙修远
2023-12-01

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(

[Direction.InputOutput("ID", "RuleGuid", "Name", "Location")] Beta_Auto Auto);

那没用.

[SprocName("Beta_Auto_Update")]

public abstract void UpdateByParam(int Id, string RuleGuid, string Name, string Location);

还试过这个:

[ActionName("Update")]

public abstract void UpdateByParam(int Id, string RuleGuid, string Name, string Location);

那没用.

将odp.net上的跟踪级别设置为7.看到正在进行调用,但看不到任何参数.对企业Oracle来说,XE(认为它可能是一个许可问题,因为db大于5GB).没工作.

创建新用户,数据文件,表空间,并为用户分配所有角色和权限,包括执行任何过程.没工作.

我运行了一个标准的ado.net(非常长的啰嗦)通过OracleCommand调用存储过程,它完美地调用并进行了更新.

我很难过.所有上述工作都适用于SQL Server.

谢谢.

scope_creep

 类似资料: