编辑:使用Execute方法而不是Query/ QueryMultiple方法,我的OUT_SUCCESS参数现在有一个AttachedParam带有OracleParameter返回值的with .因此,如果我只需要检索非游标参数,那么这将起作用.然后我可以使用Execute所有非游标输出参数的程序和Query/ 只QueryMultiple用于光标输出参数的程序.但是,如果我需要调用已存储的过程既光标和非游标输出参数,这是常有的情况?
使用Dapper.NET和OracleDynamicParameters类我已经成功返回并映射了多个IN OUT REF CURSORs,但是我无法获得单个OUT参数的值.
例如,我试图使用以下规范调用存储过程:
PROCEDURE DO_SOMETHING (
OUT_SUCCESS OUT VARCHAR2
)
Run Code Online (Sandbox Code Playgroud)
为此我创建了一个相应的C#类来对其进行建模,其中包含获取OracleDynamicParameters,CommandText等等的方法,还包括每个参数的自动实现属性
public class DO_SOMETHING {
... //code to return parameters, etc
public string OUT_SUCCESS { get; set; }
...
}
Run Code Online (Sandbox Code Playgroud)
我尝试了以下所有语法:
using (var gridReader = Connection.QueryMultiple(nModel.CommandText(), param: nModel.DynamicParameters(), …Run Code Online (Sandbox Code Playgroud) 目前我有一个具有这种结构的表:
CREATE TABLE "DUMMY_SCHEMA"."NAMES"
(
"ID" NUMBER(10,0) GENERATED ALWAYS AS IDENTITY (START WITH 1 INCREMENT BY 1 CACHE 20) NOT NULL
, "NAME" NVARCHAR2(1024) NOT NULL
, CONSTRAINT "NAMES_PK" PRIMARY KEY ("ID")
);
Run Code Online (Sandbox Code Playgroud)
在 SQL Server 中,我只需要执行以下操作即可获取插入行的 ID。
INSERT INTO [NAMES]([NAME])VALUES('Random'); SELECT SCOPE_IDENTITY() Id
Run Code Online (Sandbox Code Playgroud)
Oracle 12c 的等效项是什么?