Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.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
C# dbms_output.Put_行在c Dapper中_C#_Oracle_Dapper - Fatal编程技术网

C# dbms_output.Put_行在c Dapper中

C# dbms_output.Put_行在c Dapper中,c#,oracle,dapper,C#,Oracle,Dapper,我需要将一个变量oracle返回到C,但是我使用Dapper,那么是否存在通过Dapper接收输出的方法 我试过这样做 ORACLE ... ,NULL /*CLIENTE_GRUPO_CPF*/ ,'P'

我需要将一个变量oracle返回到C,但是我使用Dapper,那么是否存在通过Dapper接收输出的方法

我试过这样做

ORACLE    ...
            ,NULL                                                               /*CLIENTE_GRUPO_CPF*/
            ,'P'                                                                /*LOTE_PRODUCAO_PEDIDO*/
            ,'N'                                                                /*LIBERACAO_COMERCIAL*/
            ,NULL                                                               /*USUARIO_LIB_COMERCIAL*/
            ,NULL                                                               /*DATA_LIB_COMERCIAL*/
            ,NULL                                                               /*HORA_LIB_COMERCIAL*/
            ,'L'                                                                );
    COMMIT;
    dbms_output.put_line(var_zi_controle_id);
    END ;


C#  
var id = conn.QueryFirstOrDefault<int>(sql);
但这样的答案是0。

使用dbms\u output.put\u linevar\u zi\u controle\u id;如果输出的变量不正确,这将不适用于编程语言/数据库驱动程序(如ODP.Net),这是用于控制台打印和验证

Dapper由一组扩展方法组成,这些扩展方法扩展了ADO.Net的IDbConnection接口,在Oracle内部,您可以填写ODP.Net-OracleConnection对象,现在当您查看ODP.Net指南以调用任何PL SQL存储过程时,您有以下选项:

绑定输出或返回参数,并在PL SQL过程中填充该参数。使用Dapper,除了像输出/返回这样的输入之外,还需要DynamicParameter来绑定参数 另一个选项是您当前尝试的方式,您希望Select语句以整数形式返回值,所以您需要的是在过程中选择var_zi_controle_id,它将作为QueryResult出现,但仍然需要类型T,它包含一个整数值,在这里,您将得到一个具有一个整型属性var\u zi\u controle\u id的类型/类 我的首选方法是添加输出参数,在存储过程中赋值并检索值,检查下面的链接以获得良好的参考。一个简单的例子是:

 var dynamicParameters = new DynamicParameters();
 dynamicParameters.Add("var_zi_controle_id",0,DbType.Int32,ParameterDirection.Output)
也可以使用参数方向选项InputOutput和ReturnValue,但ReturnValue需要过程中的显式返回值

//执行存储过程

conn.Execute(@"ProcedureName", dynamicParameters, commandType: CommandType.StoredProcedure);
//从dynamicParameters获取O/p参数值

重要的是,在调用返回之前设置绑定到存储过程的输出参数var_zi_controle_id,以便获取值

var id = dynamicParameters.Get<int>("var_zi_controle_id");