在绿屏STRSQL中创建2个表时出错

时间:2016-06-03 04:20:38

标签: sql

我在尝试在Green Screen STRSQL中创建2个表时遇到错误。

CREATE TABLE QTEMP/CUSTOMER AS (SELECT * FROM CBHHUBFP/SSCUSTP)

CREATE TABLE QTEMP/ADDRESS AS (SELECT * FROM QTEMP/CUSTOMER)

错误:关键字创建不符合预期 有效代币结束语

我在这里错过了什么吗?

2 个答案:

答案 0 :(得分:0)

使用STRSQL,您只能执行一个SQL语句。

答案 1 :(得分:0)

我对@dcieslak接受的答案的评论,以下是一个动态复合语句(DCS)的示例,其语法应该对任何系统上的/ * SYS命名选项有效。 DB2 for IBM i],因为该DCS功能的可用性;注意添加WITH DATA子句以使语句在语法上正确,并将CREATE TABLEBEGIN内的两个分号分隔的请求括在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,可能大部分只是一堆额外/不必要的工作。