用spt更新ORACLE,第1张

用spt更新ORACLE,第2张

使用Oracle SPs插入和更新来自VFP的数据
摘要
这个演示代码将连接到Oracle[使用您的ID和密码]来创建一个总统表、一个触发器、一个序列和
一些存储过程。可以调用存储过程来插入和更新Presidents表中的数据。VFP类中的三个
方法会将数据值传递给Oracle过程,Oracle过程会将数据值插入到表中,或者
更新表中的现有记录。更新SPs还将返回一个等于更新的记录数的值。
描述
下面的演示代码可以粘贴到Visual FoxPro PRG中,无需修改即可运行。
*!*要使用此代码,您必须能够连接到Oracle和
*!*已被授予以下Oracle特权,用于
*!*您连接的用户id:
*!*
*!*删除任何序列
*!*删除表
*!*创建表
*!*创建序列
*!*创建过程
*!*创建触发器
*!*
*!UpdateMultiple和UpdateByKeyID方法向您展示如何
*!*获取一个存储过程,将一个值填充到VFP变量中
*!*[即在Oracle SP和VFP之间通过引用传递值]。
*!*
*!*本演示中创建的存储过程没有提交;行
*!*插入或更新SQL后。连接终止时,
*!* Oracle将执行隐式提交。下面的销毁方法
*!*如果lCommitOnDestroy属性为TRUE,则发出SQLCOMMIT()。
*!*
CLEAR
LOCAL oDemo
oDemo = CREATEOBJECT(' Oracle demo ')
IF TYPE(' oDemo ')" O "

?没有联系。指定了无效的用户id、密码和/或服务器参数。
如果不是oDemo,则返回
ENDIF
。Cr8_Presidents()
oDemo。Release()

?Cr8_Presidents方法失败。
如果不是oDemo,则返回
ENDIF
。Cr8_SProcs()
oDemo。Release()

?Cr8_SProcs方法失败。
如果不是oDemo,则返回
ENDIF
。InsertData()
oDemo。Release()

?InsertData方法失败。
RETURN
ENDIF

?奥德莫。UpdateMultiple()

?Updated _ By列从“InsTest”更改为“Test1”]
?[对于姓氏像“Adams%”的总统]

?[ - ]

?奥德莫。UpdateByKeyID()

?[对于KeyID = 40的记录:]
?[名字列从“George”更改为“George”]
?[姓氏列从“Bush”更改为“Bush 1”]
?Update _ By列从“InsTest”更改为“test 2”]

奥德莫。release()
返回

将类OracleDemo定义为Custom
n handle = 0
cUserID =[]
lcommitondreate = . t .
PROTECTED PROCEDURE Init
LOCAL LC constring,lnold value
lnold value = SQLGETPROP(0," DispLogin")
SQLSETPROP(0," DispLogin ",2)
LC constring =[Driver = Microsoft ODBC for Oracle;UID =;PWD =;服务器=;]
THIS . n handle = sqlstring connect(LC constring)
SQL setprop(0," DispLogin ",lnold value)
IF THIS . n handle > 0
THIS。get UserID()
ENDIF
RETURN THIS . n handle > 0
end proc
PROCEDURE Release
Release THIS
end proc
PROTECTED PROCEDURE Destroy
IF THIS . n handle > 0
IF THIS . lcommitton Destroy
SQLCOMMIT(THIS . n handle)
ENDIF
SQL disconnect(THIS . n handle)[]UserID)
USE IN CRS user
end proc
PROCEDURE update multiple
LOCAL lcSQL,lnRetVal,la error(1)
PRIVATE pcname mask PC updated _ By,pnRowCount
pcname mask =[Adams %]
PC updated _ By =[TEST1]
pnRowCount = 0
TEXT TO lcSQL TEXT merge no show托辞2
begin。PrezUpdateAll
(nRowCount= >?@pnRowCount,
cNameMask= >?pcNameMask,
cUpdated_By= >?PC updated _ By);结束;
end text
lcSQL = strran(lcSQL,CHR(13) + CHR(10),[ ])
IF THIS。RunSQL(lcSQL)
RETURN[update multiple RowCount:]+TRANSFORM(pnRowCount)
ELSE
RETURN[]
end proc
PROCEDURE UpdateByKeyID
LOCAL lcSQL,lnRetVal,laError(1)
PRIVATE pnKeyID,pcLoginID,pcFirstName,pcLastName,pcUpdated_By,pnRowCount
pnKeyID = 4PrezUpdate
(nRowCount= >?@pnRowCount,nKeyID= >?pnKeyID,cLoginID= >?pcLoginID,
cFirstName= >?pcFirstName,cLastName= >?pcLastName,
cUpdated_By= >?PC updated _ By);结束;
end text
lcSQL = strran(lcSQL,CHR(13) + CHR(10),[ ])
IF THIS。RunSQL(lcSQL)
RETURN[UpdateByKeyID RowCount:]+TRANSFORM(pnRowCount)
ELSE
RETURN[]
ENDIF
end proc
PROCEDURE Cr8 _ Presidents
LOCAL lcScript,lnRetVal
TEXT TO lcScript TEXT merge no show托辞2
drop sequence S S
end TEXT
如果不是这样。RunSQL(lcScript)
RETURN . f .
ENDIF

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 用spt更新ORACLE

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情