写了一个存储过程如下
CREATE OR REPLACE PACKAGE PKG_AUTHORITY
AS
FUNCTION FNC_TEST(
IN_AUTH_CD IN VARCHAR2
)RETURN VARCHAR2; PROCEDURE PRC_TEST(
IN_AUTH_CD IN VARCHAR2
,OT_RES_VALUE OUT VARCHAR2
);END PKG_AUTHORITY;CREATE OR REPLACE PACKAGE BODY PKG_AUTHORITY
AS
FUNCTION FNC_TEST(
IN_AUTH_CD IN VARCHAR2
)RETURN VARCHAR2
IS
BEGIN
IF IN_AUTH_CD = 'A' THEN
RETURN 'FALSE';
ELSE
RETURN 'TRUE';
END IF;
END FNC_TEST;
PROCEDURE PRC_TEST(
IN_AUTH_CD IN VARCHAR2
,OT_RES_VALUE OUT VARCHAR2
)
IS
BEGIN
IF IN_AUTH_CD = 'A' THEN
OT_RES_VALUE := 'FALSE';
ELSE
OT_RES_VALUE := 'TRUE';
END IF;
END PRC_TEST;
END PKG_AUTHORITY;用ODP.NET调用存储过程时怎么设置参数。下面这样我试过了,不行
Dim param() As OracleParameter = {New OracleParameter(":IN_AUTH_CD", OracleDbType.Varchar2) _
, New OracleParameter(":OT_RETURN_VALLUE", OracleDbType.Varchar2)}
param(0).Value = "1"
param(0).Direction = ParameterDirection.Input
param(1).Direction = ParameterDirection.Output附带说一句,我看了ODP.NET的例子,例子的参数要不都是in,要不都是out,实际上开发的
不可能这样。
CREATE OR REPLACE PACKAGE PKG_AUTHORITY
AS
FUNCTION FNC_TEST(
IN_AUTH_CD IN VARCHAR2
)RETURN VARCHAR2; PROCEDURE PRC_TEST(
IN_AUTH_CD IN VARCHAR2
,OT_RES_VALUE OUT VARCHAR2
);END PKG_AUTHORITY;CREATE OR REPLACE PACKAGE BODY PKG_AUTHORITY
AS
FUNCTION FNC_TEST(
IN_AUTH_CD IN VARCHAR2
)RETURN VARCHAR2
IS
BEGIN
IF IN_AUTH_CD = 'A' THEN
RETURN 'FALSE';
ELSE
RETURN 'TRUE';
END IF;
END FNC_TEST;
PROCEDURE PRC_TEST(
IN_AUTH_CD IN VARCHAR2
,OT_RES_VALUE OUT VARCHAR2
)
IS
BEGIN
IF IN_AUTH_CD = 'A' THEN
OT_RES_VALUE := 'FALSE';
ELSE
OT_RES_VALUE := 'TRUE';
END IF;
END PRC_TEST;
END PKG_AUTHORITY;用ODP.NET调用存储过程时怎么设置参数。下面这样我试过了,不行
Dim param() As OracleParameter = {New OracleParameter(":IN_AUTH_CD", OracleDbType.Varchar2) _
, New OracleParameter(":OT_RETURN_VALLUE", OracleDbType.Varchar2)}
param(0).Value = "1"
param(0).Direction = ParameterDirection.Input
param(1).Direction = ParameterDirection.Output附带说一句,我看了ODP.NET的例子,例子的参数要不都是in,要不都是out,实际上开发的
不可能这样。
和一般返回結果集合的存儲過程的用法一樣,只是需要加包名。
...
SqlCommand sampleCMD = new SqlCommand("Package.ProName", myConn);
sampleCMD.CommandType = CommandType.StoredProcedure;
...myC
Dim myConnection As New OracleConnection(connectstring)
myConnection.Open()
Dim myCommand As New OracleCommand()
myCommand.Connection = myConnection
myCommand.CommandType = CommandType.StoredProcedure myCommand.CommandText = "packagename.procedurename" myCommand.Parameters.Add("CURSORname", OracleType.Cursor).Direction = ParameterDirection.Output Dim myReader As OracleDataReader
myReader = myCommand.ExecuteReader() ListBox2.DataSource = myReader
ListBox2.DataTextField = "PROJECTNAME"
ListBox2.DataBind()
ListBox2.SelectedIndex = 0 myReader.Close()
myConnection.Close()
myReader = Nothing
myConnection = Nothing
http://211.99.196.144:8090/forum1/frontshow/dispbbs.jsp?boardid=106&id=3818