C#调用Oracle存储过程
时间:2021-07-01 10:21:17
帮助过:9人阅读
using System;
2 using System.Collections.Generic;
3 using System.Collections.ObjectModel;
4 using System.ComponentModel;
5 using System.Configuration;
6 using System.Data;
7 using System.Data.OracleClient;
8 using System.Drawing;
9 using System.Linq;
10 using System.Reflection;
11 using System.Text;
12 using System.Threading.Tasks;
13 using System.Windows.Forms;
14
15 namespace ExecuteProcByOracle
16 {
17 public partial class Form1 : Form
18 {
19 public Form1()
20 {
21 InitializeComponent();
22 }
23
24 private void Btn_LoadData_Click(
object sender, EventArgs e)
25 {
26 // 存储过程名称
27 string strProcName =
"usp_yngr_getInfectionCard";
28 // 存储过程参数
29 OracleParameter[] parameters =
{
30 new OracleParameter(
"V_BeginTime",OracleType.VarChar),
31 new OracleParameter(
"V_EndTime",OracleType.VarChar),
32 new OracleParameter(
"V_DateType",OracleType.Number),
33 new OracleParameter(
"V_PtName",OracleType.VarChar),
34 new OracleParameter(
"V_PtChartNo",OracleType.VarChar),
35 new OracleParameter(
"V_DeptCode",OracleType.VarChar),
36 new OracleParameter(
"V_CheckedStatus",OracleType.VarChar),
37 // 返回值的类型是游标类型
38 new OracleParameter(
"cur_out",OracleType.Cursor)
39 };
40 // 设置存储过程参数数组的值和参数的类型
41 parameters[
0].Value =
"2017-06-01";
42 parameters[
0].Direction =
ParameterDirection.Input;
43 parameters[
1].Value =
"2017-07-31";
44 parameters[
1].Direction =
ParameterDirection.Input;
45 parameters[
2].Value =
1;
46 parameters[
2].Direction =
ParameterDirection.Input;
47 parameters[
3].Value =
"";
48 parameters[
3].Direction =
ParameterDirection.Input;
49 parameters[
4].Value =
"";
50 parameters[
4].Direction =
ParameterDirection.Input;
51 parameters[
5].Value =
"";
52 parameters[
5].Direction =
ParameterDirection.Input;
53 parameters[
6].Value =
"1";
54 parameters[
6].Direction =
ParameterDirection.Input;
55 parameters[
7].Direction =
ParameterDirection.Output;
56
57 this.dgv_Demo.DataSource =
LoadData(strProcName, parameters);
58 }
59
60 private DataTable LoadData(
string strProcName,
params OracleParameter[] parameters)
61 {
62
63 DataTable dt =
new DataTable();
64 string strConn = ConfigurationManager.ConnectionStrings[
"HealthHospInfection"].ConnectionString;
65 using (OracleConnection conn =
new OracleConnection(strConn))
66 {
67 try
68 {
69
70 OracleCommand cmd =
new OracleCommand();
71 cmd.CommandText =
strProcName;
72 cmd.CommandType =
CommandType.StoredProcedure;
73 cmd.Connection =
conn;
74 conn.Open();
75 if (parameters !=
null)
76 {
77 // 添加参数
78 cmd.Parameters.AddRange(parameters);
79 }
80
81 // 取数据
82 using (OracleDataAdapter adapter =
new OracleDataAdapter(cmd))
83 {
84
85 adapter.Fill(dt);
86 }
87 }
88 catch (Exception ex)
89 {
90 MessageBox.Show(
"错误:" + ex.Message +
"/r/n跟踪:" +
ex.StackTrace);
91 }
92 finally
93 {
94 conn.Close();
95 }
96 }
97
98 return dt;
99 }
100 }
101 }
示例代码下载地址:https://files.cnblogs.com/files/dotnet261010/CSharp%E6%89%A7%E8%A1%8COracle%E5%AD%98%E5%82%A8%E8%BF%87%E7%A8%8B.rar
C#调用Oracle存储过程
标签:man direct 错误 init 设置 loaddata threading eve 取数据