GetReviewTask

public string GetReviewTask(GetReviewTaskInput input)

{

/*

* 试过三种写法都不对,暂时找不出是什么原因,改成拼Sql;

*

OracleParameter[] sqlParameters =

{

new OracleParameter (":UserId", input.UserId),

new OracleParameter (":ExamCourseId", input.ExamCourseId),

new OracleParameter (":QuestionsId", input.QuestionsId),

new OracleParameter (":TaskType", input.TaskType)

};

*/

/*

DbParameter[] sqlParameters =

{

new OracleParameter { ParameterName = ":UserId", Value = input.UserId },

new OracleParameter { ParameterName = ":ExamCourseId", Value = input.ExamCourseId },

new OracleParameter { ParameterName = ":QuestionsId", Value = input.QuestionsId },

new OracleParameter { ParameterName = ":TaskType", Value = input.TaskType }

};

*/

/*

var pars = new OracleParameter[4];

pars[0] = new OracleParameter(":UserId", input.UserId);

pars[1] = new OracleParameter(":ExamCourseId", input.ExamCourseId);

pars[2] = new OracleParameter(":QuestionsId", input.QuestionsId);

pars[3] = new OracleParameter(":TaskType", input.TaskType);

*/

var outputParameter = new OracleParameter

{

ParameterName = "CUR",

OracleDbType = OracleDbType.RefCursor,

Direction = ParameterDirection.Output

};

DbParameter[] parameters = {

new OracleParameter("P_USER_ID", input.UserId),

new OracleParameter("P_EXAM_COURSE_ID", input.ExamCourseId),

new OracleParameter("P_QUESTIONS_ID", input.QuestionsId),

new OracleParameter("P_TASK_TYPE", input.TaskType),

outputParameter

};

/*

var sqlQuery = $@" SELECT T1.TASK_ID TaskId

FROM T_RVW_REVIEW_WORK T1

INNER JOIN T_RVW_QUESTIONS_PERMISSION T2

ON T1.EXAM_COURSE_ID = T2.EXAM_COURSE_ID AND T1.QUESTIONS_ID = T2.QUESTIONS_ID

WHERE T1.QUESTIONS_ID = '{input.QuestionsId}'

AND T1.EXAM_COURSE_ID = '{input.ExamCourseId}'

AND T1.TASK_TYPE = {input.TaskType}

AND T1.USER_ID IS NULL

AND T2.USER_ID = '{input.UserId}'

AND T1.IS_DONE = 0

AND ROWNUM = 1

FOR UPDATE SKIP LOCKED";

*/

var result = "";

var dt = ExecuteProc("USP_RVW_GET_REVIEW_TASK", parameters);

result = dt?.Rows.Count == 1 ? dt.Rows[0][0].ToString() : "";

dt?.Dispose();

return result;

}

ExecuteProc

private DataTable ExecuteProc(string procName, params DbParameter[] parms)

{

using (var conn = new OracleConnection(Context.Database.Connection.ConnectionString))

{

var outParms = parms.Where(p => p.Direction == System.Data.ParameterDirection.Output || p.Direction == System.Data.ParameterDirection.ReturnValue).ToList();

var command = new OracleCommand(procName)

{

Connection = conn,

CommandType = CommandType.StoredProcedure

};

command.Parameters.AddRange(parms);

conn.Open();

command.ExecuteNonQuery();

var ds = new DataSet();

IDbDataAdapter da = new OracleDataAdapter(command);

da.Fill(ds);

command.Parameters.Clear();

command.Dispose();

conn.Close();

return ds.Tables[0];

}

}

USP_RVW_GET_REVIEW_TASK

CREATE OR REPLACE PROCEDURE USP_RVW_GET_REVIEW_TASK

( P_USER_ID VARCHAR2,

P_EXAM_COURSE_ID VARCHAR2,

P_QUESTIONS_ID VARCHAR2,

P_TASK_TYPE INT,

CUR OUT SYS_REFCURSOR )

IS

V_TASK_ID VARCHAR2(50);

BEGIN

BEGIN

SELECT T1.TASK_ID

INTO V_TASK_ID

FROM T_RVW_REVIEW_WORK T1

INNER JOIN T_RVW_QUESTIONS_PERMISSION T2

ON T1.EXAM_COURSE_ID = T2.EXAM_COURSE_ID

AND T1.QUESTIONS_ID = T2.QUESTIONS_ID

WHERE T1.QUESTIONS_ID = P_QUESTIONS_ID

AND T1.EXAM_COURSE_ID = P_EXAM_COURSE_ID

AND T1.TASK_TYPE = P_TASK_TYPE

AND T1.USER_ID IS NULL

AND T2.USER_ID = P_USER_ID

AND T1.IS_DONE = 0

AND ROWNUM = 1;

DBMS_OUTPUT.PUT_LINE('TaskId:'||V_TASK_ID);

UPDATE T_RVW_REVIEW_WORK

SET USER_ID = P_USER_ID

WHERE TASK_ID = V_TASK_ID AND IS_DONE = 0;

COMMIT;

EXCEPTION

WHEN NO_DATA_FOUND THEN

DBMS_OUTPUT.PUT_LINE('NO_DATA_FOUND');

END;

OPEN CUR FOR

SELECT TASK_ID

FROM T_RVW_REVIEW_WORK

WHERE TASK_ID = V_TASK_ID;

END;

c# 调用oracle function,C#调用Oracle存储过程的方法相关推荐

  1. ibatis oracle function,IBATIS调用oracle function(函数)的步骤实例

    IBATIS调用oracle function(函数)的方法实例 引用 create or replace function getClassifiedCode(p_planCode in varch ...

  2. oracle function详解,Oracle 函数 Function 解析

    定义 函数用于计算和返回一个结果值,把经常需要进行的计算写成函数,函数的调用是表达式的一部分. 函数与过程在创建的形式上有些相似,也是编译后放在内存中供用户使用. 函数必须有一个返回值,而过程没有做强 ...

  3. 查询工作日 oracle,Oracle function实现根据输入的日期以及天数,获取此日期之后的天数的工作日...

    前提:在法定节日表(t_fdjr )中维护法定节日包括周六周天 /** * 功能描述:根据输入的日期以及天数,获取此日期之后的天数的工作日 * 输入参数: * i_date YYYY-MM-DD * ...

  4. Oracle数据库中调用Java类开发存储过程、函数的方法

    Oracle数据库中调用Java类开发存储过程.函数的方法 时间:2014年12月24日  浏览:5538次 oracle数据库的开发非常灵活,不仅支持最基本的SQL,而且还提供了独有的PL/SQL, ...

  5. oracle 定时任务 job 调用存储过程有回到输出参数(含out参数)

    oracle 定时任务 job 调用存储过程有返回输出参数(含out参数) 因前台调用一个含有OUT参数的存储过程,同时在JOB里也想调用同一个存储过程,不想将OUT参数去掉重新建一个存储过程再被JO ...

  6. oracle数据块调用存储过程,VC调用存储过程的通用方法(ORACLE篇)

    先对上一篇调用SQLServer的存储过程作一点补充,就是如果存储过程里有Insert,update,delete等操作,最后返回结果集,按示例代码有可能得不到数据,因为返回的数据有可能不在第一个结果 ...

  7. python调用oracle存,Python使用cx_Oracle调用Oracle存储过程的方法示例

    本文实例讲述了Python使用cx_Oracle调用Oracle存储过程的方法.分享给大家供大家参考,具体如下: 这里主要测试在Python中通过cx_Oracle调用PL/SQL. 首先,在数据库端 ...

  8. oracle中调用过程,oracle中如何调用存储过程

    oracle中如何调用存储过程 发布时间:2020-03-08 03:28:03 来源:51CTO 阅读:511 作者:lxg290 一.通过pls块来调用存储过程: declare p_dzno v ...

  9. cmd 调用oracle存储过程,asp.net中调用oracle存储过程的方法

    存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果 ...

最新文章

  1. python爬取地图上的经纬度_Python调用百度地图API爬取经纬度
  2. WindowsPhone7开发简单豆瓣网应用程序之界面设计
  3. C++ class实现顺序队列(完整代码)
  4. 街机linux有安卓好吗,Ubuntu下用xmame玩街机游戏
  5. 猎取人心的36条黄金法则
  6. linux scp传输文件命令
  7. jmeter mysql数据导出_Jmeter连接mysql
  8. selenium获取接口 HAR
  9. Java大数据-Week2-Day1 面向对象基础
  10. IOS用标签显示滑块的值
  11. Oracle与SQL Server的语法区别——Oracle数据库学习
  12. CFS三层靶机搭建及其内网渗透
  13. flutter 问题之MappedListIterableis not a subtype of type List解决
  14. dsolve函数的功能_MATLAB 求解常微分方程的函数是dsolve()。
  15. HTTP ERROR 404 Problem accessing /hwi/authorize.jsp. Reason: HWI HIVE
  16. 使用Echarts制作动态嵌套饼图
  17. 华为20pro计算机在哪,华为mate20pro卡槽在哪
  18. vmware虚拟服务器弊端,VM虚拟机问题总结
  19. 数据库学习之(5)详解DBMS
  20. Git 工作常用命令行

热门文章

  1. Docker安装Mysql(docker-compose.yml)
  2. Docker快速搭建Oracle12c
  3. BPDU内容、BPDU中flag位详解、RSTP协议BPDU中的flag位和STP中的BPDU flag位的区别(附图,建议PC观看)
  4. 记,NSProxy需要实现哪些方法?
  5. Linux(服务器编程):25---epoll复用技术实现统一处理信号事件源
  6. CCF 201609-2 火车购票
  7. sqlmap地表最强sql注入检测工具学习使用
  8. optional java_使用Java时查看Optional数据类型和一些反模式
  9. git 代理 git_五分钟解释Git的要点
  10. 面试官问面向对象特点_最好的面试官有什么共同点?