客户端利用存储过程获取Oracle数据库的序列值
时 间:2022-10-25 22:21:22
作 者:AngelHis ID:20576 城市:沈阳
摘 要:通常在access客户端是无法直接获取oracle数据库的序列,用Ado运行“SELECT SQ_REG_MZ.NEXTVAL INTO SQ_NO FROM DUAL; ”时会无法执行。解决方法:可以通过调用数据库存储过程的方法间接获取。
正 文:
1.数据库创建序列
-- Create sequence
create sequence SQ_PATIENT_NO_MZ
minvalue 1
maxvalue 999999999999999999999999999
start with 1001
increment by 1
nocache;
2.数据库创建存储过程
Create or REPLACE PROCEDURE PRC_REG_MZ_NO(SQ_PATIENT_NO IN OUT NUMBER) IS
BEGIN
Select SQ_PATIENT_NO_MZ.NEXTVAL INTO SQ_PATIENT_NO FROM DUAL;
END PRC_REG_MZ_NO;
3. 客户端创建调用存储过程的函数
Public Function orcProc(ProcName As String, Optional strPara As Variant, Optional WARN As Integer, Optional Conn As ADODB.Connection) As Integer
'******************
'通过数组参数调用存储过程
'参数 storProcName 为存储过程名
'参数 strPara() 使用数组作为存储过程参数
'******************
On Error GoTo ERR
Dim cmd As New ADODB.Command
Dim ConnStr As String
Dim I As Integer
' ConnStr = "DRIVER={Microsoft ODBC for oracle};UID=*****;PWD=*****;SERVER=*****;"
' conn.ConnectionString = ConnStr
' conn.Open
DoCmd.Hourglass True
If Conn Is Nothing Then Set Conn = orC_ADOConn()
cmd.ActiveConnection = Conn
cmd.CommandType = adCmdStoredProc
cmd.CommandText = ProcName
If Not IsMissing(strPara) Then
If UBound(strPara) >= 0 Then
For I = 0 To UBound(strPara)
cmd.Parameters(I).Value = strPara(I)
Next
End If
End If
cmd.Execute
If Not IsMissing(strPara) Then
If UBound(strPara) >= 0 Then
For I = 0 To UBound(strPara)
strPara(I) = cmd.Parameters(I).Value
Next
End If
End If
Set cmd = Nothing
orcProc = 1
DoCmd.Hourglass False
Exit Function
ERR:
DoCmd.Hourglass False
Set cmd = Nothing
orcProc = 0
If WARN = 1 Then MsgBox "执行错误【" & ProcName & "】——" & ERR.Description, vbInformation, "系统提示"
End Function
4.测试
Function F_GET_PATIENT_NO_MZ_TEST() As Long
Dim P() As Variant, I As Integer, L As Long
P = Array(L)
Debug.Print Now()
I = orcProc("PRC_REG_MZ_NO", P, 1)
Debug.Print Now()
If I = 1 Then L = P(0)
F_GET_PATIENT_NO_MZ_TEST = L
Debug.Print L
End Function
Access软件网QQ交流群 (群号:54525238) Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- 统计当月之前(不含当月)的记录...(03.11)
- 【Access Inputbo...(03.03)
- 按回车键后光标移动到下一条记录...(02.12)
- 【Access Dsum示例】...(02.07)
- Access对子窗体的数据进行...(02.05)
- 【Access高效办公】上月累...(01.09)
- 【Access高效办公】上月累...(01.06)
- 【Access Inputbo...(12.23)
- 【Access Dsum示例】...(12.16)

学习心得
最新文章
- 仓库管理实战课程(8)-商品信息功...(04.01)
- 仓库管理实战课程(7)-链接表(03.31)
- 仓库管理实战课程(6)-创建查询(03.29)
- 仓库管理实战课程(5)-字段属性(03.27)
- 设备装配出入库管理系统;基于Acc...(03.24)
- 仓库管理实战课程(4)-建表操作(03.22)
- 仓库管理实战课程(3)-需求设计说...(03.19)
- 仓库管理实战课程(2)-软件背景和...(03.18)
- 仓库管理实战课程(1)-讲师介绍(03.16)
- 统计当月之前(不含当月)的记录数怎...(03.11)