Sql 在DB2中从数组创建表
我需要运行一个脚本,从select语句中获取的数字数组创建表 这里是我到目前为止得到的结果,但是由于某种原因它不起作用,并且普通的PL SQL在DB2V9.7中不起作用Sql 在DB2中从数组创建表,sql,arrays,stored-procedures,for-loop,db2,Sql,Arrays,Stored Procedures,For Loop,Db2,我需要运行一个脚本,从select语句中获取的数字数组创建表 这里是我到目前为止得到的结果,但是由于某种原因它不起作用,并且普通的PL SQL在DB2V9.7中不起作用 CREATE OR REPLACE PROCEDURE proc1() IS BEGIN CREATE TABLE TEMP_YEAR ( YEAR_COLUMN integer ); INSERT INTO temp_year ( year_column ) (
CREATE OR REPLACE PROCEDURE proc1()
IS
BEGIN
CREATE TABLE TEMP_YEAR
( YEAR_COLUMN integer
);
INSERT INTO temp_year
( year_column )
(
select extract(year from datum) from datetest
);
FOR vl AS
c1 cursor for
SELECT year_column FROM temp_year
DO
EXEC SQL execute immediate 'create table YEAR_' || year_column
|| ' (year integer, name varchar2(50));
END FOR;
drop table temp_year;
END;
/
我第一次尝试它时没有经过这个过程,但是也没有用。…如果你真的想使用数组,你可以使用关联数组。这将便于编写所需的流程 有关更多信息,请参阅这篇优秀的文章:
第二行可能应该说“as”,而不是“is”。而且,“不工作”这个词太模糊了。您是否收到错误或不期望的结果?我收到多个错误。第一个是:(从德语翻译过来)sqlcode:-104 sqlstate:42601 CREATE TABLE TEMP_YEAR(YEAR_COLUMN integer)DB21034E sql语句无效。“过程过程1()AS”上的SQL0104N跟随未检查的标记“BEGIN”。可能的标记为:“:”。行号=3。SQLSTATE=42601此错误在BEGIN中。从一个更简单的存储过程开始,手动分配变量中的年份值。我不需要使用数组。。。我们的目标是能够创建名为year\的表(这里是变量值),并从select语句的变量中获取值。我只能考虑借助数组来实现这一点。在这种情况下,改变你的问题,或者创建一个新的问题,解释你想要什么,以及你到目前为止做了什么。因为您当前的代码令人困惑。