我在尝试在Green Screen STRSQL中创建2个表时遇到错误。
CREATE TABLE QTEMP/CUSTOMER AS (SELECT * FROM CBHHUBFP/SSCUSTP)
CREATE TABLE QTEMP/ADDRESS AS (SELECT * FROM QTEMP/CUSTOMER)
错误:关键字创建不符合预期 有效代币结束语
我在这里错过了什么吗?
答案 0 :(得分:0)
使用STRSQL,您只能执行一个SQL语句。
答案 1 :(得分:0)
我对@dcieslak接受的答案的评论,以下是一个动态复合语句(DCS)的示例,其语法应该对任何系统上的/ * SYS命名选项有效。 DB2 for IBM i],因为该DCS功能的可用性;注意添加WITH DATA子句以使语句在语法上正确,并将CREATE TABLE
和BEGIN
内的两个分号分隔的请求括在END
中:
begin
CREATE TABLE QTEMP/CUSTOMER AS (SELECT * FROM qiws/qcustcdt )
with data
;
CREATE TABLE QTEMP/ADDRESS AS (SELECT * FROM QTEMP/CUSTOMER)
with data
;
end
-- Table ADDRESS created in QTEMP. /* <-- feedback of final rqs */
虽然可以作为单个请求输入,但根据额外的开销,编码可能没有意义;也许如果在隔离下运行并做更多工作和编写异常处理,那么就会有价值。 IOW,启动交互式SQL会话(STRSQL)脚本环境允许隔离和用户决策在单独输入语句时对异常作出反应,在每个语句之后按Enter键。
除非这个想法是测试可能在例程[作为复合语句,BEGIN-END对之间的语句]中写入的内容,而不实际编码CREATE PROCEDURE
[或CREATE FUNCTION
¿或{{ 1}}?]使用 routine-body ,然后隐式创建的例程[as procedure]然后运行并删除以实现DCS,可能大部分只是一堆额外/不必要的工作。