sql5Word下载.docx

上传人:b****5 文档编号:15715179 上传时间:2022-11-15 格式:DOCX 页数:47 大小:45.68KB
下载 相关 举报
sql5Word下载.docx_第1页
第1页 / 共47页
sql5Word下载.docx_第2页
第2页 / 共47页
sql5Word下载.docx_第3页
第3页 / 共47页
sql5Word下载.docx_第4页
第4页 / 共47页
sql5Word下载.docx_第5页
第5页 / 共47页
点击查看更多>>
下载资源
资源描述

sql5Word下载.docx

《sql5Word下载.docx》由会员分享,可在线阅读,更多相关《sql5Word下载.docx(47页珍藏版)》请在冰豆网上搜索。

sql5Word下载.docx

下表显示了AS/400的DB2所支持的语句,并且指出是否可以用在动态应用程序中。

表8-1.在动态应用中允许的SQL语句

SQL语句

静态SQL

动态SQL

ALTERTABLE

Y

BEGINDECLARESECTION

N

CALL

CLOSE

COMMENTON

COMMIT

CONNECT

CREATECOLLECTION

CREATEINDEX

CREATEPROCEDURE

CREATESCHEMA

见注8.

CREATETABLE

CREATEVIEW

DECLARECURSOR

见注4.

DECLAREPROCEDURE

DECLARESTATEMENT

DECLAREVARIABLE

DELETE

DESCRIBE

见注7.

DESCRIBETABLE

DISCONNECT

DROP

ENDDECLARESECTION

EXECUTE

见注1.

EXECUTEIMMEDIATE

见注2.

FETCH

GRANT

INCLUDE

INSERT

LABELON

LOCKTABLE

OPEN

PREPARE

见注3.

RELEASE

RENAME

REVOKE

RLOOBACK

SELECTINTO

见注5.

SELECTstatment

见注6.

SETCONNECTION

SETOPTION

见注9.

SETRESULTSETS

SETTRANSACTION

UPDATE

WHENEVER

1.不可准备,但可运行准备好的SQL语句。

必须在使用EXECUTE语句之前用PREPARE

语句准备。

SQL语句例子请看8.2.2。

2.不可准备,但可用没有任何?

(问号)参数标志的动态语句字符串EXECUTE

IMMEDIATE语句可在程序运行期间动态的准备和运行语句字符。

例子请看8.2。

3.不可准备,但可在运行前用来分析语法、优化、设置动态的SELECT语句。

例子请

看8.2。

4.不可准备,但可在运行前定义联系动态SELECT语句的游标。

5.SELECTINTO语句不能准备或用在EXECUTEIMMEDIATE语句中。

6.不能与EXECUTE或者EXECUTEIMMEDIATE一起使用,但可用OPEN语句准

备和使用。

7.不可准备,但可用来返回准备语句的说明。

8.只可用RUNSQLSTM命令来运行。

9.只能用在运行REXX过程中。

8.1设计和运行动态SQL应用程序

为了运行一个动态SQL语句,必须使用EXECUTE或者EXECUTEIMMEDIATE语句,因为动态的SQL语句不必在预编译时准备,所以.必须在运行时准备。

EXECUTEIMMEDIATE语句使得SQL语句在程序运行时准备和动态运行。

有两种基本类型的动态SQL语句:

SELECT语句和Non-SELECT语句。

Non-SELECT语句包括DELETE,INSERT,UPDATE这样的语句。

典型的使用ODBC接口的客户服务应用程序使用动态的SQL来访问数据库。

详细信息,请看ClientAccessforWindows3.1ODBC用户指南。

8.2处理Non-SELECT语句

要创建一个动态的SQLNon-SELECT语句有以下二步:

1.确定要创建的SQL语句可以在动态下运行。

2.创建SQL语句(使用交互式SQL是一种简单的创建确认运行方法,详细内容请看第十七章。

要运行动态SQLNon-SELECT语句:

1.用EXECUTEIMMEDIATE语句运行,或用PREPARE语句,然后用EXECUTE执行准备好的语句。

2.处理SQL产生的返回码。

下面是一个运行动态SQL应用程序的例子:

EXECSQL

EXECUTEIMMEDIATE:

字符串

8.2.1动态SQL语句的CCSID

SQL语句是一个正规的主变量。

主变量的CCSID用作语句正文的CCSID。

在PL/1中,它也可以是一个串表达式。

在这种情况下,作业的CCSID作为语句正文的CCSID来使用。

动态SQL语句用语句正文的CCSID来处理。

这对不同字符的影响最大。

例如,(用CCSID500分配为’BA’X,即是说,如果语句正文的CCSID是500,SQL认为(分配为’BA’X,如果语句正文的CCSID为65535,SQL处理可变字符就象它们的CCSID为37一样,即把(解释为’5F’X

8.2.2使用PREPARE和EXECUTE语句

如果Non-SELECT语句中包含无参数标记,那么可以用EXECUTEIMMEDIATE语句来动态的运行。

但如果Non-SELECT语句中有参数标记,那么必须用PREPARE和EXECUTE来运行。

PREPARE语句准备Non-SELECT语句(例如DELETE语句)并且给它一个你所选择的名字,如果在CRTSQLxxx命令中规定了DLYPRP(*YES),那么准备工作将延迟到第一次在EXECUTE或DESCRIBE语句中使用它时,除非在PREPARE语句中具体规定了USING子句。

在这个例子中,我们称它为S1。

在语句准备好后,可以对参数标记使用不同的值,在同一个程序内运行多次。

下面是PREPARE语句使用多次的例子:

DSTRING='

DELETEFROMCORPDATA.EMPLOYEEWHEREEMPNO=?

'

;

/*The?

isaparametermarkerwhichdenotes

thatthisvalueisahostvariablethatis

tobesubstitutedeachtimethestatementisrun.*/

EXECSQLPREPARES1FROM:

DSTRING;

/*DSTRINGisthedeletestatementthatthePREPAREstatementis

namingS1.*/

DOUNTIL(EMP=0);

/*TheapplicationprogramreadsavalueforEMPfromthe

displaystation.*/

EXECSQL

EXECUTES1USING:

EMP;

END;

上面的例子与例行程序相似,必须知道参数标记的个数以及它们的类型,这是提供输入数据的主变量在写程序时说明的。

当应用程序一旦终结,所有与应用程序相联系的准备语句将被撤销。

它们之间的连接由CONNECT(类型1)语句,DISCONNECT语句或在成功的落实之后的一个RELEASE来结束。

8.3处理SELECT语句和使用SQLDA

有两个基本的SELECT语句类型:

固定列表,可变列表。

处理一个固定列表的SELECT语句,不需要SQLDA。

处理一个可变列表的SELECT语句,首先要说明SQLDA结构。

SQLDA是一个控制模块,用来从应用程序传送主变量输入值到SQL中,及从SQL接收输出值。

另外,有关SELETE列表表达式信息可以用PREPARE或DESCRIBE语句返回。

8.3.1固定列表的SELECT语句

在动态SQL中,固定列表SELECT语句是为了检索那些预先知道数值和类型的数据的语句。

使用这些语句时,可以预料并定义主变量来容纳取出来的数据,因此SQLDA是不必要的。

每次成功的FETCH都返回与上一次相同数量的值,并且这些数据有与上次FETCH返回值相同的数据格式。

可以规定主变量,适用于任何SQL应用程序。

可以在任何SQL支持的应用程序中使用固定列表的SELECT语句。

为了动态运行固定列表SELECT语句,应用程序必须:

1.把输入的SQL语句放入主变量中。

2.发出一个PREPARE语句来验证动态SQL语句并把它放到一个可运行的格式中。

果在CRTSQLxxx命令中规定了DLYPRP(*YES),那么准备将推迟到该语句第一次

用在EXECUTE或DESCRIBE语句中,除非在PREPARE语句中规定了USING子句。

3.为语句名说明一个游标。

4.打开游标。

5.取出一行放在变量的固定列表中(而不是放入描述符区)。

6.在到达数据末时,关闭游标。

7.处理产生的返回代码。

例如:

MOVE'

SELECTEMPNO,LASTNAMEFROMCORPDATA.EMPLOYEEWHEREEMPNO>

?

TODSTRING.

PREPARES2FROM:

DSTRINGEND-EXEC.

DECLAREC2CURSORFORS2END-EXEC.

OPENC2USING:

EMPEND-EXEC.

PERFORMFETCH-ROWUNTILSQLCODENOT=0.

CLOSEC2END-EXEC.

STOP-RUN.

FETCH-ROW.

FETCHC2INTO:

EMP,:

EMPNAMEEND-EXEC.

记住,在这种情况下,由于SELECT语句总是返回与先前运行固定列表SELECT相同的数值与类型,不必一定使用SQLDA。

8.3.2可变列表的SELECT语句

在动态SQL中,可变列表的SELE

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 其它语言学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1