最近要用OLE DB访问Oracle的存储过程,可是总是无法执行。逼得我快发疯了,有谁有着方面的例子呀?最好有能返回查询结果的。一定给分!
解决方案 »
- static控件继承CWnd,显示图像
- Dshow 中Graph Edit中怎么解码G.729文件?
- 怎样把char型数组转换为LPTSTR和LPCTSTR类型?
- SendMessage 可以付带,一个用户定义的参数吗?
- 初学vc请好心人推荐几本好书?????????
- 各位大侠!小弟最近迷上API编程,哪位知道哪里有关于API函数库之类的东东,麻烦告之在下!
- cannot open file "mfc42u.lib"? 这是什么东东?
- windows xp 怎样直接给端口送值(_outp和嵌套汇编均报"Privilege instruction")
- 在MFC中如何得到当前系统安装的TRUETYPE字体
- MFC动态创建自定义控件,拖动和缩放过程中出现先创建的控件被隐藏的情况
- 有大连的吗
- 《windows 程序设计》的光盘问题,请高手解决以下。
CREATE OR REPLACE PACKAGE Employees AS
TYPE empcur IS REF CURSOR;
PROCEDURE GetEmpRecords(p_cursor OUT empcur,
q_cursor OUT empcur,
indeptno IN NUMBER,
p_errorcode OUT NUMBER);
FUNCTION GetDept(inempno IN NUMBER,
p_errorcode OUT NUMBER)
RETURN empcur;
END Employees;CREATE OR REPLACE PACKAGE BODY Employees AS
PROCEDURE GetEmpRecords(p_cursor OUT empcur,
q_cursor OUT empcur,
indeptno IN NUMBER,
p_errorcode OUT NUMBER) IS
BEGIN
p_errorcode := 0;
OPEN p_cursor FOR
SELECT * FROM emp WHERE deptno = indeptno ORDER BY empno;
OPEN q_cursor FOR
OraOLEDB Provider Specific Features SELECT empno FROM emp
WHERE deptno = indeptno ORDER BY empno;
EXCEPTION
WHEN OTHERS THEN
p_errorcode:= SQLCODE;
END GetEmpRecords; FUNCTION GetDept(inempno IN NUMBER,
p_errorcode OUT NUMBER)
RETURN empcur IS
p_cursor empcur;
BEGIN
p_errorcode := 0;
OPEN p_cursor FOR
SELECT deptno FROM emp WHERE empno = inempno;
RETURN (p_cursor);
EXCEPTION
WHEN OTHERS THEN
p_errorcode:= SQLCODE;
END GetDept;END Employees;
/////////////////////////////////////////////////////////////////////////////////////
Dim Oracon As ADODB.Connection
Dim recset As New ADODB.Recordset
Dim cmd As New ADODB.Command
Dim param1 As New ADODB.Parameter
Dim param2 As New ADODB.Parameter
Dim objErr As ADODB.Error
Dim Message, Title, Default, EmpNoValue
Message = "Enter an employee number (5000 - 9000)"
Title = "Choose an Employee"
Default = "7654"
On Error GoTo err_test
EmpNoValue = InputBox(Message, Title, Default)
If EmpNoValue = "" Then Exit Sub
If EmpNoValue < 5000 Or EmpNoValue > 9000 Then EmpNoValue = 7654
Set Oracon = CreateObject("ADODB.Connection")
Oracon.ConnectionString = "Provider=OraOLEDB.Oracle;" & _
"Data Source=exampledb;" & _
"User ID=scott;" & _
"Password=tiger;" & Oracon.Open
Set cmd = New ADODB.Command
Set cmd.ActiveConnection = Oracon
Set param1 = cmd.CreateParameter("param1", adSmallInt, adParamInput, ,
EmpNoValue)
cmd.Parameters.Append param1
Set param2 = cmd.CreateParameter("param2", adSmallInt, adParamOutput)
cmd.Parameters.Append param2
’ Enable PLSQLRSet property
Cmd.Properties ("PLSQLRSet") = TRUE
cmd.CommandText = "{CALL Employees.GetDept(?, ?)}"
Set recset = cmd.Execute
’ Disable PLSQLRSet property
Cmd.Properties ("PLSQLRSet") = FALSE
MsgBox "Number: " & EmpNoValue & " Dept: " & recset.Fields("deptno").Value
Exit Sub
err_test:
MsgBox Error$
For Each objErr In Oracon.Errors
MsgBox objErr.Description
Next
Oracon.Errors.Clear
Resume Next
Dim Oracon As ADODB.Connection
Dim recset As New ADODB.Recordset
Dim cmd As New ADODB.Command
Dim param1 As New ADODB.Parameter
Dim param2 As New ADODB.Parameter
Dim objErr As ADODB.Error
Dim Message, Title, Default, DeptValue
Message = "Enter a department number (10, 20, or 30)"
Title = "Choose a Department"
Default = "30"
On Error GoTo err_test
DeptValue = InputBox(Message, Title, Default)
If DeptValue = "" Then Exit Sub
If DeptValue < 10 Or DeptValue > 30 Then DeptValue = 30
Set Oracon = CreateObject("ADODB.Connection")
Oracon.ConnectionString = "Provider=OraOLEDB.Oracle;" & _
"Data Source=exampledb;" & _
"User ID=scott;" & _
"Password=tiger;" &
Oracon.Open
Set cmd = New ADODB.Command
Set cmd.ActiveConnection = Oracon
Set param1 = cmd.CreateParameter("param1", adSmallInt, adParamInput, ,
DeptValue)
cmd.Parameters.Append param1
Set param2 = cmd.CreateParameter("param2", adSmallInt, adParamOutput)
cmd.Parameters.Append param2
’ Enable PLSQLRSet property
Cmd.Properties ("PLSQLRSet") = TRUE
cmd.CommandText = "{CALL Employees.GetEmpRecords(?, ?)}"
Set recset = cmd.Execute
’ Disable PLSQLRSet property
Cmd.Properties ("PLSQLRSet") = FALSE
Do While Not recset.EOF
MsgBox "Number: " & recset.Fields("empno").Value & " Name: " &
recset.Fields("ename").Value & " Dept: " & recset.Fields("deptno").Value
recset.MoveNext
Loop
Exit Sub
err_test:
MsgBox Error$
For Each objErr In Oracon.Errors
MsgBox objErr.Description
Next
Oracon.Errors.Clear
Resume Next
http://expert.csdn.net/Expert/topic/1194/1194790.xml?temp=.1896173