用spt更新ORACLE

分类:计算机等级

|

更新时间:2016-07-08|

来源:转载

Using Oracle SPs to Insert and Update Data from VFP

Summary

This demo code will connect to Oracle [using your ID and password] to create a table of Presidents, a trigger, a sequence and

some stored procedures. The stored procedures can be called to insert and update data in the Presidents table. Three of the

methods in the VFP class will pass data values to the Oracle procedures which will either be inserted into the table or

update existing records in the table. The update SPs will also return a value equal to the number of records updated.

Description

The following demo code can be pasted into a Visual FoxPro PRG and run without modifications.

*!* To use this code, you must be able to connect to Oracle and

*!* have been granted the following Oracle privileges for the

*!* UserID you connected with:

*!*

*!* DROP ANY SEQUENCE

*!* DROP TABLE

*!* CREATE TABLE

*!* CREATE SEQUENCE

*!* CREATE PROCEDURE

*!* CREATE TRIGGER

*!*

*!* The UpdateMultiple and UpdateByKeyID methods show you how to

*!* get a Stored Procedure to stuff a value inta a VFP variable

*!* [i.e., passing a value by reference between an Oracle SP and VFP].

*!*

*!* The Stored Procedures created in this demo do not have a COMMIT; line

*!* after the INSERT or UPDATE SQL. When the connection is terminated,

*!* Oracle will perform an implicit COMMIT. The Destroy method below

*!* issues a SQLCOMMIT() if the lCommitOnDestroy property is TRUE.

*!*

CLEAR

LOCAL oDemo

oDemo = CREATEOBJECT(’OracleDemo’)

IF TYPE(’oDemo’) <> "O"

?

? ’No Connection. An Invalid UserID, Password and/or Server parameter was specified.’

RETURN

ENDIF

IF NOT oDemo.Cr8_Presidents()

oDemo.Release()

?

? ’Cr8_Presidents method failed.’

RETURN

ENDIF

IF NOT oDemo.Cr8_SProcs()

oDemo.Release()

?

? ’Cr8_SProcs method failed.’

RETURN

ENDIF

IF NOT oDemo.InsertData()

oDemo.Release()

?

? ’InsertData method failed.’

RETURN

ENDIF

?

? oDemo.UpdateMultiple()

?

? [The Updated_By column was changed from "InsTest" to "Test1"]

? [for Presidents with a LastName LIKE "Adams%"]

?

? [-----------------------------------------------------------]

?

? oDemo.UpdateByKeyID()

?

? [For the record with KeyID = 40:]

? [The FirstName column was changed from "George" to "GeorgE"]

? [The LastName column was changed from "Bush" to "Bush1"]

? [The Update_By column was changed from "InsTest" to "Test2"]

?

oDemo.Release()

RETURN

DEFINE CLASS OracleDemo AS Custom

nHandle = 0

cUserID = []

lCommitOnDestroy = .T.

PROTECTED PROCEDURE Init

LOCAL lcConString, lnOldValue

lnOldValue = SQLGETPROP(0, "DispLogin")

SQLSETPROP(0, "DispLogin", 2)

lcConString = [Driver=Microsoft ODBC for Oracle;UID=;PWD=;Server=;]

THIS.nHandle = SQLSTRINGCONNECT(lcConString)

SQLSETPROP(0, "DispLogin", lnOldValue)

IF THIS.nHandle > 0

THIS.GetUserID()

ENDIF

RETURN THIS.nHandle > 0

ENDPROC

PROCEDURE Release

RELEASE THIS

ENDPROC

PROTECTED PROCEDURE Destroy

IF THIS.nHandle > 0

IF THIS.lCommitOnDestroy

SQLCOMMIT(THIS.nHandle)

ENDIF

SQLDISCONNECT(THIS.nHandle)

ENDIF

ENDPROC

PROTECTED PROCEDURE GetUserID

SQLEXEC(THIS.nHandle, [select USER UserID from dual], [crsUser])

THIS.cUserID = ALLTRIM(crsUser.UserID)

USE IN crsUser

ENDPROC

PROCEDURE UpdateMultiple

LOCAL lcSQL, lnRetVal, laError(1)

PRIVATE pcNameMask pcUpdated_By, pnRowCount

pcNameMask = [Adams%]

pcUpdated_By = [TEST1]

pnRowCount = 0

TEXT TO lcSQL TEXTMERGE NOSHOW PRETEXT 2

begin <>.PrezUpdateAll

(nRowCount=>?@pnRowCount,

cNameMask=>?pcNameMask,

cUpdated_By=>?pcUpdated_By); end;

ENDTEXT

lcSQL = STRTRAN(lcSQL, CHR(13) + CHR(10), [ ])

IF THIS.RunSQL(lcSQL)

RETURN [UpdateMultiple RowCount: ] + TRANSFORM(pnRowCount)

ELSE

RETURN []

ENDIF

ENDPROC

PROCEDURE UpdateByKeyID

LOCAL lcSQL, lnRetVal, laError(1)

PRIVATE pnKeyID, pcLoginID, pcFirstName, pcLastName, pcUpdated_By, pnRowCount

pnKeyID = 40

pcLoginID = [GBUSH]

pcFirstName = [GeorgE]

pcLastName = [Bush1]

pcUpdated_By = [Test2]

pnRowCount = 0

TEXT TO lcSQL TEXTMERGE NOSHOW PRETEXT 2

begin <>.PrezUpdate

(nRowCount=>?@pnRowCount, nKeyID=>?pnKeyID, cLoginID=>?pcLoginID,

cFirstName=>?pcFirstName, cLastName=>?pcLastName,

cUpdated_By=>?pcUpdated_By); end;

ENDTEXT

lcSQL = STRTRAN(lcSQL, CHR(13) + CHR(10), [ ])

IF THIS.RunSQL(lcSQL)

RETURN [UpdateByKeyID RowCount: ] + TRANSFORM(pnRowCount)

ELSE

RETURN []

ENDIF

ENDPROC

PROCEDURE Cr8_Presidents

LOCAL lcScript, lnRetVal

TEXT TO lcScript TEXTMERGE NOSHOW PRETEXT 2

drop sequence S_Presidents

ENDTEXT

IF NOT THIS.RunSQL(lcScript)

RETURN .f.

ENDIF  来源:-计算机二级考试 TEXT TO lcScript TEXTMERGE NOSHOW PRETEXT 2

drop table Presidents

ENDTEXT

IF NOT THIS.RunSQL(lcScript)

RETURN .f.

ENDIF

TEXT TO lcScript TEXTMERGE NOSHOW PRETEXT 2

create table Presidents

(keyid number(4),

loginid varchar2(8),

lastname varchar2(30),

firstname varchar2(30),

updated_by varchar2(8))

ENDTEXT

IF NOT THIS.RunSQL(lcScript)

RETURN .f.

ENDIF

TEXT TO lcScript TEXTMERGE NOSHOW PRETEXT 2

create sequence S_Presidents start with 1 increment by 1 nocache

ENDTEXT

IF NOT THIS.RunSQL(lcScript)

RETURN .f.

ENDIF

TEXT TO lcScript TEXTMERGE NOSHOW PRETEXT 2

create or replace trigger Presidents_BEFORE_INSUPDT

before insert or update on <>.Presidents

for each row

declare

v_Id Number;

BEGIN

If :new.KeyID Is Null or :new.KeyID

select S_Presidents.nextval into v_Id from dual;

:new.KeyID := v_Id;

End If;

END;

ENDTEXT

IF NOT THIS.RunSQL(lcScript)

RETURN .f.

ENDIF

ENDPROC

PROCEDURE Cr8_SProcs

LOCAL lcScript, lnRetVal

TEXT TO lcScript NOSHOW PRETEXT 2

CREATE OR REPLACE PROCEDURE PrezInsert

(cLoginID IN Presidents.LoginID%Type,

cLastName IN Presidents.LastName%Type,

cFirstName IN Presidents.FirstName%Type,

cUpdated_By IN Presidents.Updated_By%Type) AS

BEGIN

INSERT INTO Presidents

(LoginID, LastName, FirstName, Updated_By)

VALUES

(cLoginID, cLastName, cFirstName, cUpdated_By);

END;

ENDTEXT

IF NOT THIS.RunSQL(lcScript)

RETURN .f.

ENDIF

TEXT TO lcScript NOSHOW PRETEXT 2

CREATE OR REPLACE PROCEDURE PrezUpdateAll

(cNameMask IN Presidents.LastName%Type,

cUpdated_By IN Presidents.Updated_By%Type,

nRowCount OUT NUMBER) AS

BEGIN

UPDATE Presidents

SET Updated_By = cUpdated_By

WHERE LastName LIKE cNameMask;

nRowCount := SQL%ROWCOUNT;

END;

ENDTEXT

IF NOT THIS.RunSQL(lcScript)

RETURN .f.

ENDIF

TEXT TO lcScript NOSHOW PRETEXT 2

CREATE OR REPLACE PROCEDURE PrezUpdate

(nRowCount OUT NUMBER,

nKeyID IN Presidents.KeyID%Type,

cLoginID IN Presidents.LoginID%Type,

cLastName IN Presidents.LastName%Type,

cFirstName IN Presidents.FirstName%Type,

cUpdated_By IN Presidents.Updated_By%Type) AS

BEGIN

UPDATE Presidents

SET LoginID = cLoginID,

LastName = cLastName,

FirstName = cFirstName,

Updated_By = cUpdated_By

WHERE KeyID = nKeyID;

nRowCount := SQL%ROWCOUNT;

END;

ENDTEXT

IF NOT THIS.RunSQL(lcScript)

RETURN .f.

ENDIF

ENDPROC

PROCEDURE InsertData

LOCAL laData(42, 3)

laData[ 1, 1] = ’GWASHING’

laData[ 1, 2] = ’Washington’

laData[ 1, 3] = ’George’

laData[ 2, 1] = ’JADAMS’

laData[ 2, 2] = ’Adams’

laData[ 2, 3] = ’John’

laData[ 3, 1] = ’TJEFFERS’

laData[ 3, 2] = ’Jefferson’

laData[ 3, 3] = ’Thomas’

laData[ 4, 1] = ’JMADISON’

laData[ 4, 2] = ’Madison’

laData[ 4, 3] = ’James’

laData[ 5, 1] = ’JMONROE’

laData[ 5, 2] = ’Monroe’

laData[ 5, 3] = ’James’

laData[ 6, 1] = ’JQADAMS’

laData[ 6, 2] = ’Adams’

laData[ 6, 3] = ’John Q’

laData[ 7, 1] = ’AJACKSON’

laData[ 7, 2] = ’Jackson’

laData[ 7, 3] = ’Andrew’

laData[ 8, 1] = ’MVBUREN’

laData[ 8, 2] = ’Van Buren’

laData[ 8, 3] = ’Martin’

laData[ 9, 1] = ’WHARRISO’

laData[ 9, 2] = ’Harrison’

laData[ 9, 3] = ’William’

laData[10, 1] = ’JTYLER’

laData[10, 2] = ’Tyler’

laData[10, 3] = ’John’

laData[11, 1] = ’JPOLK’

laData[11, 2] = ’Polk’

laData[11, 3] = ’James’

laData[12, 1] = ’ZTAYLOR’

laData[12, 2] = ’Taylor’

laData[12, 3] = ’Zachary’

laData[13, 1] = ’MFILLMOR’

laData[13, 2] = ’Fillmore’

laData[13, 3] = ’Millard’

laData[14, 1] = ’FPIERCE’

laData[14, 2] = ’Pierce’

laData[14, 3] = ’Franklin’

laData[15, 1] = ’JBUCHANA’

laData[15, 2] = ’Buchanan’

laData[15, 3] = ’James’

laData[16, 1] = ’ALINCOLN’

laData[16, 2] = ’Lincoln’

laData[16, 3] = ’Abe’  来源:-计算机二级考试 laData[17, 1] = ’AJOHNSON’

laData[17, 2] = ’Johnson’

laData[17, 3] = ’Andrew’

laData[18, 1] = ’UGRANT’

laData[18, 2] = ’Grant’

laData[18, 3] = ’Ulysses’

laData[19, 1] = ’RHAYES’

laData[19, 2] = ’Hayes’

laData[19, 3] = ’Rutherford’

laData[20, 1] = ’JGARFIEL’

laData[20, 2] = ’Garfield’

laData[20, 3] = ’James’

laData[21, 1] = ’CARTHUR’

laData[21, 2] = ’Arthur’

laData[21, 3] = ’Chester’

laData[22, 1] = ’GCLEVELA’

laData[22, 2] = ’Cleveland’

laData[22, 3] = ’Grover’

laData[23, 1] = ’BHARRISO’

laData[23, 2] = ’Harrison’

laData[23, 3] = ’Benjamin’

laData[24, 1] = ’WMCKINLE’

laData[24, 2] = ’McKinley’

laData[24, 3] = ’William’

laData[25, 1] = ’TROOSEVE’

laData[25, 2] = ’Roosevelt’

laData[25, 3] = ’Theodore’

laData[26, 1] = ’WTAFT’

laData[26, 2] = ’Taft’

laData[26, 3] = ’William’

laData[27, 1] = ’WWILSON’

laData[27, 2] = ’Wilson’

laData[27, 3] = ’Woodrow’

laData[28, 1] = ’WHARDING’

laData[28, 2] = ’Harding’

laData[28, 3] = ’Warren’

laData[29, 1] = ’CCOOLIDG’

laData[29, 2] = ’Coolidge’

laData[29, 3] = ’Calvin’

laData[30, 1] = ’HHOOVER’

laData[30, 2] = ’Hoover’

laData[30, 3] = ’Herbert’

laData[31, 1] = ’FROOSEVE’

laData[31, 2] = ’Roosevelt’

laData[31, 3] = ’Franklin’

laData[32, 1] = ’HTRUMAN’

laData[32, 2] = ’Truman’

laData[32, 3] = ’Harry’

laData[33, 1] = ’DEISENHO’

laData[33, 2] = ’Eisenhower’

laData[33, 3] = ’Dwight’

laData[34, 1] = ’JKENNEDY’

laData[34, 2] = ’Kennedy’

laData[34, 3] = ’John’

laData[35, 1] = ’LJOHNSON’

laData[35, 2] = ’Johnson’

laData[35, 3] = ’Lyndon’

laData[36, 1] = ’RNIXON’

laData[36, 2] = ’Nixon’

laData[36, 3] = ’Richard’

laData[37, 1] = ’GFORD’

laData[37, 2] = ’Ford’

laData[37, 3] = ’Gerald’

laData[38, 1] = ’JCARTER’

laData[38, 2] = ’Carter’

laData[38, 3] = ’James’

laData[39, 1] = ’RREAGAN’

laData[39, 2] = ’Reagan’

laData[39, 3] = ’Ronald’

laData[40, 1] = ’GBUSH’

laData[40, 2] = ’Bush’

laData[40, 3] = ’George’

laData[41, 1] = ’WCLINTON’

laData[41, 2] = ’Clinton’

laData[41, 3] = ’William’

laData[42, 1] = ’GWBUSH’

laData[42, 2] = ’Bush’

laData[42, 3] = ’George W’

LOCAL lnI, lcSQL

PRIVATE pcLoginID, pcLastName, pcFirstName, pcUpdated_By

pcUpdated_By = "InsTest"

FOR lnI = 1 TO 42

pcLoginID = laData(lnI, 1)

pcLastName = laData(lnI, 2)

pcFirstName = laData(lnI, 3)

lcSQL = "begin MARK.PrezInsert" ;

+ "(cLoginID=>?pcLoginID," ;

+ " cFirstName=>?pcFirstName," ;

+ " cLastName=>?pcLastName," ;

+ " cUpdated_By=>?pcUpdated_By); end;"

THIS.RunSQL(lcSQL)

ENDFOR

ENDPROC

PROTECTED PROCEDURE RunSQL

LPARAMETERS pcSQL

LOCAL lnRetVal

lnRetVal = SQLEXEC(THIS.nHandle, pcSQL)

IF lnRetVal

AERROR(laError)

?

? pcSQL

?

DISPLAY MEMORY LIKE laErr*

ENDIF

RETURN lnRetVal > 0

ENDPROC

ENDDEFINE来源:-计算机二级考试

计算机等级考试oracle,用spt更新ORACLE相关推荐

  1. 计算机等级考试_四级数据库_考试大纲(持续更新)

    计算机等级考试 4级考试大纲列表: http://www.ncre.cn/html1/report/1712/8765-1.htm 2018年9月广东全国计算机等级考试报名时间为: 2018年6月1日 ...

  2. 计算机等级考试属于什么培训,计算机等级是什么

    2004-12-25 你知VFP是什么东西吗?它是我们大学 VFP是有些落伍了,微软在几年前就已经停止对VFP的升级及技术支持了. 现在比较流行的是关系型数据库,例如:Oracle db2 MSSQL ...

  3. 2011年9月全国计算机等级考试四级网络工程师 试卷+题解

    这是2011年9月全国计算机等级考试四级笔试试卷以及我自己做的题解. 不敢保证100%正确,正确率应该在95%左右. 如有错误,敬请指证!正确答案请大家等待官方题解! 懒得整理文档格式,需要的请下载W ...

  4. 全国计算机等级考试一级b历年真题,2011年3月全国计算机等级考试一级b真题

    2011年3月全国计算机等级考试一级b真题 (5页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 2011年年3月全国计算机等级考试一级月 ...

  5. 网络大学统考计算机是不是文管二级,河南省大学计算机等级考试选择题(文管二级)...

    河南省大学计算机等级考试选择题(文管二级) C.信息容量 D.频带利用率 24.在计算机网络中,通常把提供并管理共享资源的计算机称为____.(1 分) A.服务器 B.工作站 C.网关 D.网桥 2 ...

  6. Java计算机等级考试系统的实现_基于JSP的计算机等级考试查询系统的设计与实现论文.docx...

    基于JSP的计算机等级考试查询系统的设计与实现论文.docx 职场大变样社区():下载毕业设计成品全套资料,全部50元以下毕业设计(论文)任务书第1页毕业设计(论文)题目:基于JSP的计算机等级考试查 ...

  7. 江苏计算机三级偏软全程,数据库系统-江苏省计算机等级考试-三级偏软

    <数据库系统-江苏省计算机等级考试-三级偏软>由会员分享,可在线阅读,更多相关<数据库系统-江苏省计算机等级考试-三级偏软(31页珍藏版)>请在人人文库网上搜索. 1.南京邮电 ...

  8. 计算机机等级考试四级模拟,2017年全国计算机等级考试四级模拟试题(四)

    (67) How many key comparisons occur in searching for key 35 in the given hash table? (2分) A) 0 B) 1 ...

  9. 全国计算机等级考试评卷、成绩处理和证书管理办法

    一.笔试答卷评阅 1.省级承办机构受教育部考试中心委托,组织该项考试的笔试评卷工作.中心考点受省级承办机构委托,作为评卷点承担评卷任务,进行集中.封闭评卷. 2.评卷点应建立严格的保密.保管制度.试卷 ...

  10. 省高校计算机等级考试二级,湖南省高校计算机等级考试二级考试0810.ppt

    湖南省高校计算机等级考试二级考试0810 数据库的修改 在Visual FoxPro中,修改数据库实际是打开数据库设计器,在其中完成各种数据库对象的建立.修改和删除等操作. 命令格式: MODIFY ...

最新文章

  1. Specification排序orderby
  2. 全局变量中断原子操作_原子操作原理分析
  3. 我的Go+语言初体验——【一、go+环境WIN10_100%成功安装(附-视频)】
  4. JavaScript之面向对象学习四原型对象的动态性
  5. Java类加载的那些事
  6. Linux block
  7. 用卷积神经网络识别实际田间条件下茶叶病虫害(自然环境下拍摄的数据集不用太多预处理)
  8. 视频+案例,玩转LightGBM
  9. 利用Docker学习Redis笔记(一)
  10. ansys linux运行_如何在linux系统下启动workbench。谢谢啦。 - 仿真模拟 - 小木虫 - 学术 科研 互动社区...
  11. 光网络时代网络工程师成长路线图
  12. 转并学习: 将rar文件转换为zip格式
  13. 学习笔记 | 假设检验概念、小概率事件、P-Value与显著性水平、假设检验步骤
  14. 民谣吉他之新手调音,弦音不对的问题
  15. [SDOI2008]Sue的小球(区间Dp)
  16. silk lobe资源公众号_小说免费阅读公众号:恐怖玄幻资源
  17. bind()使用方法
  18. 解决depot_tools clone不了 443 connection refused
  19. Oracle 查看 SQL执行计划
  20. 数据挖掘的好书_数据挖掘经典书籍

热门文章

  1. android ndk串口触屏,Aandroid NDK开发之串口控制
  2. 【回归预测】基于matlab Tent混沌映射改进的麻雀搜索算法SSA优化BP神经网络回归预测【含Matlab源码 1707期】
  3. 【预测模型】基于matlab离散状态空间模型模拟预测控制仿真系统(单输入单输出)【含Matlab源码 1537期】
  4. 【路径规划】基于matlab果蝇优化算法机器人路径规划【含Matlab源码 677期】
  5. 【数据分析】基于matlab焊缝边缘检测算法对比分析 【含Matlab源码 260期】
  6. mysql 优化器 cost评估_MySQL优化器cost计算
  7. arccatalog点要素显示不完_初中生到底要不要住校?班主任:不建议,看完这3点你就明白了...
  8. Java aop中参数传递
  9. pyspark to mysql_Pyspark学习笔记第2篇:connect mysql
  10. (PyTorch0.4.0) AttributeError: module 'torch' has no attribute 'flatten'