CodeSmith获取oracle存储过程或者包的参数,oracle有个一系统表,记录了没个存储过程包表的详细信息,包括参数类型,参数方向,我们只要从这个表获取想要存储过程或者包的参数那就可以达到目的了…当然获取参数是为了可以自动生成数据库层的代码…上网基本都是讲MSSQL获取参数..获取参数我写了2个package,利用这2个package就可以获取到想要的参数了.
测试平台:ORACLE9I+VS2003+CodeSmith4.12
![](/Images/OutliningIndicators/ContractedBlock.gif)
Code
1
CREATE OR REPLACE PACKAGE BODY GETPARAMETERS AS
2![](/Images/OutliningIndicators/None.gif)
3![](/Images/OutliningIndicators/None.gif)
4
PROCEDURE GETPARAMETERSLIST(
5![](/Images/OutliningIndicators/None.gif)
6
I_PROCNAME IN VARCHAR2, --GET PACKAGE NAME
7![](/Images/OutliningIndicators/None.gif)
8
I_OBJECT_TYPE IN VARCHAR2, -- PACKAGE OR PROCEDURR
9![](/Images/OutliningIndicators/None.gif)
10
I_OBJECT_NAME IN VARCHAR2,
11![](/Images/OutliningIndicators/None.gif)
12
O_CURSOR OUT T_CURSOR) --RETURN CURSOR
13![](/Images/OutliningIndicators/None.gif)
14
IS
15![](/Images/OutliningIndicators/None.gif)
16
BEGIN
17![](/Images/OutliningIndicators/None.gif)
18
OPEN O_CURSOR FOR
19![](/Images/OutliningIndicators/None.gif)
20
SELECT * FROM ALL_ARGUMENTS WHERE OBJECT_ID =
21![](/Images/OutliningIndicators/None.gif)
22
(SELECT OBJECT_ID FROM USER_OBJECTS WHERE OBJECT_TYPE=I_OBJECT_TYPE
23![](/Images/OutliningIndicators/None.gif)
24
AND OBJECT_NAME =I_PROCNAME) and OBJECT_NAME =I_OBJECT_NAME;
25![](/Images/OutliningIndicators/None.gif)
26
END GETPARAMETERSLIST;
27![](/Images/OutliningIndicators/None.gif)
28
END GETPARAMETERS;
29![](/Images/OutliningIndicators/None.gif)
30
/
31![](/Images/OutliningIndicators/None.gif)
32
33![](/Images/OutliningIndicators/None.gif)
34
35![](/Images/OutliningIndicators/None.gif)
36
37![](/Images/OutliningIndicators/None.gif)
38
39![](/Images/OutliningIndicators/None.gif)
40
CREATE OR REPLACE PACKAGE GETBODY AS
41![](/Images/OutliningIndicators/None.gif)
42
TYPE T_CURSOR IS REF CURSOR;
43![](/Images/OutliningIndicators/None.gif)
44
PROCEDURE GETBODY(I_PROCNAME IN VARCHAR2,I_OBJECT_TYPE IN VARCHAR2,
45![](/Images/OutliningIndicators/None.gif)
46
O_CURSOR OUT T_CURSOR);
47![](/Images/OutliningIndicators/None.gif)
48
END GETBODY;
49![](/Images/OutliningIndicators/None.gif)
50
/
51![](/Images/OutliningIndicators/None.gif)
52
53![](/Images/OutliningIndicators/None.gif)
54
55![](/Images/OutliningIndicators/None.gif)
56
57![](/Images/OutliningIndicators/None.gif)
58
CREATE OR REPLACE PACKAGE BODY GETBODY AS
59![](/Images/OutliningIndicators/None.gif)
60
PROCEDURE GETBODY(
61![](/Images/OutliningIndicators/None.gif)
62
I_PROCNAME IN VARCHAR2, --GET PACKAGE NAME
63![](/Images/OutliningIndicators/None.gif)
64
I_OBJECT_TYPE IN VARCHAR2, -- PACKAGE OR PROCEDURR
65![](/Images/OutliningIndicators/None.gif)
66
O_CURSOR OUT T_CURSOR) --RETURN CURSOR
67![](/Images/OutliningIndicators/None.gif)
68
IS
69![](/Images/OutliningIndicators/None.gif)
70
BEGIN
71![](/Images/OutliningIndicators/None.gif)
72
OPEN O_CURSOR FOR
73![](/Images/OutliningIndicators/None.gif)
74
SELECT object_name FROM ALL_ARGUMENTS WHERE OBJECT_ID =
75![](/Images/OutliningIndicators/None.gif)
76
(SELECT OBJECT_ID FROM USER_OBJECTS WHERE OBJECT_TYPE=I_OBJECT_TYPE
77![](/Images/OutliningIndicators/None.gif)
78
AND OBJECT_NAME =I_PROCNAME ) group by object_name;
79![](/Images/OutliningIndicators/None.gif)
80
END GETBODY;
81![](/Images/OutliningIndicators/None.gif)
82
END GETBODY;
83![](/Images/OutliningIndicators/None.gif)
84
/
85![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/ContractedBlock.gif)
Code
1
<%@ CodeTemplate Language="C#" TargetLanguage="C#" ResponseEncoding="UTF-8" Description="Generates a update stored procedure." %>
2![](/Images/OutliningIndicators/None.gif)
3
<%@ Property Name="PROC_NAME" Type="System.String" Category="Context" Description="存储过程或者包名" %>
4![](/Images/OutliningIndicators/None.gif)
5
<%@ Property Name="PROC_TYPE" Type="OBJECTTYPE" Category="Context" Description="选择是存储过程还是包" %>
6![](/Images/OutliningIndicators/None.gif)
7
<%@ Assembly Name="System.Data.OracleClient" %>
8![](/Images/OutliningIndicators/None.gif)
9
<%@ Import Namespace="System.Data.OracleClient" %>
10![](/Images/OutliningIndicators/None.gif)
11
using System;
12![](/Images/OutliningIndicators/None.gif)
13
using System.Data;
14![](/Images/OutliningIndicators/None.gif)
15
using System.Data.OracleClient;
16![](/Images/OutliningIndicators/None.gif)
17
namespace <%= PROC_NAME%>
18![](/Images/OutliningIndicators/None.gif)
19![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/ContractedBlock.gif)
{
20![](/Images/OutliningIndicators/InBlock.gif)
21
public class <%= PROC_NAME%>
22![](/Images/OutliningIndicators/InBlock.gif)
23![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
24![](/Images/OutliningIndicators/InBlock.gif)
25
<%
26![](/Images/OutliningIndicators/InBlock.gif)
27
DataSet ds = new DataSet();
28![](/Images/OutliningIndicators/InBlock.gif)
29
DataSet dsList = new DataSet();
30![](/Images/OutliningIndicators/InBlock.gif)
31
ds = GETBODY();
32![](/Images/OutliningIndicators/InBlock.gif)
33
string strBody;
34![](/Images/OutliningIndicators/InBlock.gif)
35
System.Text.StringBuilder builder = new System.Text.StringBuilder();
36![](/Images/OutliningIndicators/InBlock.gif)
37
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
38![](/Images/OutliningIndicators/InBlock.gif)
39![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
40![](/Images/OutliningIndicators/InBlock.gif)
41
builder.Append("\n\t\t包內过程");
42![](/Images/OutliningIndicators/InBlock.gif)
43
builder.Append(ds.Tables[0].Rows[i][0].ToString());
44![](/Images/OutliningIndicators/InBlock.gif)
45
builder.Append("\n\t\t过程参数:\n");
46![](/Images/OutliningIndicators/InBlock.gif)
47
strBody = ds.Tables[0].Rows[i][0].ToString();
48![](/Images/OutliningIndicators/InBlock.gif)
49
dsList = GETPARAMETERSLIST(strBody);
50![](/Images/OutliningIndicators/InBlock.gif)
51
for(int j = 0 ; j < dsList.Tables[0].Rows.Count; j++)
52![](/Images/OutliningIndicators/InBlock.gif)
53![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
54![](/Images/OutliningIndicators/InBlock.gif)
55
if(!(dsList.Tables[0].Rows[j][5].ToString() == ""))
56![](/Images/OutliningIndicators/InBlock.gif)
57![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
58![](/Images/OutliningIndicators/InBlock.gif)
59
builder.Append("\t\t"+dsList.Tables[0].Rows[j][5].ToString());
60![](/Images/OutliningIndicators/InBlock.gif)
61
builder.Append("\t"+dsList.Tables[0].Rows[j][9].ToString());
62![](/Images/OutliningIndicators/InBlock.gif)
63
builder.Append("\t"+dsList.Tables[0].Rows[j][12].ToString());
64![](/Images/OutliningIndicators/InBlock.gif)
65
builder.Append("\n");
66![](/Images/OutliningIndicators/InBlock.gif)
67
}
68![](/Images/OutliningIndicators/InBlock.gif)
69
}
70![](/Images/OutliningIndicators/InBlock.gif)
71
}
72![](/Images/OutliningIndicators/InBlock.gif)
73
Response.Write(builder.ToString());
74![](/Images/OutliningIndicators/InBlock.gif)
75
%>
76![](/Images/OutliningIndicators/InBlock.gif)
77
}
78![](/Images/OutliningIndicators/InBlock.gif)
79
}
80![](/Images/OutliningIndicators/None.gif)
81
<script runat="template">
82![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/ContractedBlock.gif)
过程参数列表
1
public DataSet GETPARAMETERSLIST(string packbody)
2![](/Images/OutliningIndicators/None.gif)
3![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/ContractedBlock.gif)
{
4![](/Images/OutliningIndicators/InBlock.gif)
5
OracleConnection con = new OracleConnection("Data Source=ecstest;user id=apps;password=fnd");
6![](/Images/OutliningIndicators/InBlock.gif)
7
8![](/Images/OutliningIndicators/InBlock.gif)
9
OracleCommand cmd = new OracleCommand();
10![](/Images/OutliningIndicators/InBlock.gif)
11
12![](/Images/OutliningIndicators/InBlock.gif)
13
cmd.CommandType = CommandType.StoredProcedure;
14![](/Images/OutliningIndicators/InBlock.gif)
15
16![](/Images/OutliningIndicators/InBlock.gif)
17
cmd.CommandText = "GETPARAMETERS.GETPARAMETERSLIST";
18![](/Images/OutliningIndicators/InBlock.gif)
19
20![](/Images/OutliningIndicators/InBlock.gif)
21
cmd.Connection = con;
22![](/Images/OutliningIndicators/InBlock.gif)
23
24![](/Images/OutliningIndicators/InBlock.gif)
25
OracleParameter I_PROCNAME = new OracleParameter("I_PROCNAME",OracleType.VarChar);
26![](/Images/OutliningIndicators/InBlock.gif)
27
28![](/Images/OutliningIndicators/InBlock.gif)
29
I_PROCNAME.Direction = ParameterDirection.Input;
30![](/Images/OutliningIndicators/InBlock.gif)
31
32![](/Images/OutliningIndicators/InBlock.gif)
33
OracleParameter I_OBJECT_TYPE = new OracleParameter("I_OBJECT_TYPE", OracleType.VarChar);
34![](/Images/OutliningIndicators/InBlock.gif)
35
36![](/Images/OutliningIndicators/InBlock.gif)
37
I_OBJECT_TYPE.Direction = ParameterDirection.Input;
38![](/Images/OutliningIndicators/InBlock.gif)
39
40![](/Images/OutliningIndicators/InBlock.gif)
41
OracleParameter I_OBJECT_NAME = new OracleParameter("I_OBJECT_NAME", OracleType.VarChar);
42![](/Images/OutliningIndicators/InBlock.gif)
43
44![](/Images/OutliningIndicators/InBlock.gif)
45
I_OBJECT_NAME.Direction = ParameterDirection.Input;
46![](/Images/OutliningIndicators/InBlock.gif)
47
48![](/Images/OutliningIndicators/InBlock.gif)
49
OracleParameter O_CURSOR = new OracleParameter("O_CURSOR", OracleType.Cursor);
50![](/Images/OutliningIndicators/InBlock.gif)
51
52![](/Images/OutliningIndicators/InBlock.gif)
53
O_CURSOR.Direction = ParameterDirection.Output;
54![](/Images/OutliningIndicators/InBlock.gif)
55
56![](/Images/OutliningIndicators/InBlock.gif)
57
cmd.Parameters.Add(I_PROCNAME);
58![](/Images/OutliningIndicators/InBlock.gif)
59
60![](/Images/OutliningIndicators/InBlock.gif)
61
cmd.Parameters.Add(I_OBJECT_TYPE);
62![](/Images/OutliningIndicators/InBlock.gif)
63
64![](/Images/OutliningIndicators/InBlock.gif)
65
cmd.Parameters.Add(I_OBJECT_NAME);
66![](/Images/OutliningIndicators/InBlock.gif)
67
68![](/Images/OutliningIndicators/InBlock.gif)
69
cmd.Parameters.Add(O_CURSOR);
70![](/Images/OutliningIndicators/InBlock.gif)
71
72![](/Images/OutliningIndicators/InBlock.gif)
73
cmd.Parameters["I_PROCNAME"].Value = PROC_NAME;
74![](/Images/OutliningIndicators/InBlock.gif)
75
76![](/Images/OutliningIndicators/InBlock.gif)
77
cmd.Parameters["I_OBJECT_TYPE"].Value = PROC_TYPE;
78![](/Images/OutliningIndicators/InBlock.gif)
79
80![](/Images/OutliningIndicators/InBlock.gif)
81
cmd.Parameters["I_OBJECT_NAME"].Value = packbody;
82![](/Images/OutliningIndicators/InBlock.gif)
83
84![](/Images/OutliningIndicators/InBlock.gif)
85
OracleDataAdapter sda = new OracleDataAdapter();
86![](/Images/OutliningIndicators/InBlock.gif)
87
88![](/Images/OutliningIndicators/InBlock.gif)
89
sda.SelectCommand = cmd;
90![](/Images/OutliningIndicators/InBlock.gif)
91
92![](/Images/OutliningIndicators/InBlock.gif)
93
DataSet ds = new DataSet();
94![](/Images/OutliningIndicators/InBlock.gif)
95
96![](/Images/OutliningIndicators/InBlock.gif)
97
sda.Fill(ds);
98![](/Images/OutliningIndicators/InBlock.gif)
99
100![](/Images/OutliningIndicators/InBlock.gif)
101
return ds;
102![](/Images/OutliningIndicators/InBlock.gif)
103
104![](/Images/OutliningIndicators/InBlock.gif)
105
}
106![](/Images/OutliningIndicators/None.gif)
107![](/Images/OutliningIndicators/None.gif)
108![](/Images/OutliningIndicators/None.gif)
109![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/ContractedBlock.gif)
包內过程数
1![](/Images/OutliningIndicators/None.gif)
2![](/Images/OutliningIndicators/None.gif)
3
public DataSet GETBODY()
4![](/Images/OutliningIndicators/None.gif)
5![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/ContractedBlock.gif)
{
6![](/Images/OutliningIndicators/InBlock.gif)
7
OracleConnection con = new OracleConnection("Data Source=ecstest;user id=apps;password=fnd");
8![](/Images/OutliningIndicators/InBlock.gif)
9
10![](/Images/OutliningIndicators/InBlock.gif)
11
OracleCommand cmd = new OracleCommand();
12![](/Images/OutliningIndicators/InBlock.gif)
13
14![](/Images/OutliningIndicators/InBlock.gif)
15
cmd.CommandType = CommandType.StoredProcedure;
16![](/Images/OutliningIndicators/InBlock.gif)
17
18![](/Images/OutliningIndicators/InBlock.gif)
19
cmd.CommandText = "GETBODY.GETBODY";
20![](/Images/OutliningIndicators/InBlock.gif)
21
22![](/Images/OutliningIndicators/InBlock.gif)
23
cmd.Connection = con;
24![](/Images/OutliningIndicators/InBlock.gif)
25
26![](/Images/OutliningIndicators/InBlock.gif)
27
OracleParameter I_PROCNAME = new OracleParameter("I_PROCNAME",OracleType.VarChar);
28![](/Images/OutliningIndicators/InBlock.gif)
29
30![](/Images/OutliningIndicators/InBlock.gif)
31
I_PROCNAME.Direction = ParameterDirection.Input;
32![](/Images/OutliningIndicators/InBlock.gif)
33
34![](/Images/OutliningIndicators/InBlock.gif)
35
OracleParameter I_OBJECT_TYPE = new OracleParameter("I_OBJECT_TYPE", OracleType.VarChar);
36![](/Images/OutliningIndicators/InBlock.gif)
37
38![](/Images/OutliningIndicators/InBlock.gif)
39
I_OBJECT_TYPE.Direction = ParameterDirection.Input;
40![](/Images/OutliningIndicators/InBlock.gif)
41
42![](/Images/OutliningIndicators/InBlock.gif)
43
OracleParameter O_CURSOR = new OracleParameter("O_CURSOR", OracleType.Cursor);
44![](/Images/OutliningIndicators/InBlock.gif)
45
46![](/Images/OutliningIndicators/InBlock.gif)
47
O_CURSOR.Direction = ParameterDirection.Output;
48![](/Images/OutliningIndicators/InBlock.gif)
49
50![](/Images/OutliningIndicators/InBlock.gif)
51
cmd.Parameters.Add(I_PROCNAME);
52![](/Images/OutliningIndicators/InBlock.gif)
53
54![](/Images/OutliningIndicators/InBlock.gif)
55
cmd.Parameters.Add(I_OBJECT_TYPE);
56![](/Images/OutliningIndicators/InBlock.gif)
57
58![](/Images/OutliningIndicators/InBlock.gif)
59
cmd.Parameters.Add(O_CURSOR);
60![](/Images/OutliningIndicators/InBlock.gif)
61
62![](/Images/OutliningIndicators/InBlock.gif)
63
cmd.Parameters["I_PROCNAME"].Value = PROC_NAME;
64![](/Images/OutliningIndicators/InBlock.gif)
65
66![](/Images/OutliningIndicators/InBlock.gif)
67
cmd.Parameters["I_OBJECT_TYPE"].Value = PROC_TYPE;
68![](/Images/OutliningIndicators/InBlock.gif)
69
70![](/Images/OutliningIndicators/InBlock.gif)
71
OracleDataAdapter sda = new OracleDataAdapter();
72![](/Images/OutliningIndicators/InBlock.gif)
73
74![](/Images/OutliningIndicators/InBlock.gif)
75
sda.SelectCommand = cmd;
76![](/Images/OutliningIndicators/InBlock.gif)
77
78![](/Images/OutliningIndicators/InBlock.gif)
79
DataSet ds = new DataSet();
80![](/Images/OutliningIndicators/InBlock.gif)
81
82![](/Images/OutliningIndicators/InBlock.gif)
83
sda.Fill(ds);
84![](/Images/OutliningIndicators/InBlock.gif)
85
86![](/Images/OutliningIndicators/InBlock.gif)
87
return ds;
88![](/Images/OutliningIndicators/InBlock.gif)
89
90![](/Images/OutliningIndicators/InBlock.gif)
91
}
92![](/Images/OutliningIndicators/None.gif)
93![](/Images/OutliningIndicators/None.gif)
完整代码下载
https://files.cnblogs.com/mextb1860/Desktop.zip