【问题标题】:Create table from Array in DB2在 DB2 中从数组创建表
【发布时间】:2014-02-05 12:39:30
【问题描述】:

我需要运行一个脚本,该脚本根据我从 select 语句中获得的一组数字创建表格。

这是我目前得到的,但是由于某种原因它无法正常工作,并且正常的 PL SQL 在 DB2 v9.7 中无法正常工作

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 语句无效。 “ROCEDURE PROC1() AS”上的 SQL0104N 跟在意外的标记“BEGIN”之后。可能的标记是:“:”。第 3 行。 SQLSTATE=42601
  • 此错误出现在 BEGIN 中。从一个更简单的存储过程开始,手动分配变量中的年份值。

标签: sql arrays stored-procedures for-loop db2


【解决方案1】:

如果你真的想使用数组,你可以使用关联数组。这样可以轻松编写您想要的流程。

欲了解更多信息,请查看这篇优秀的文章:http://www.ibm.com/developerworks/data/library/techarticle/dm-0710arocena/

http://pic.dhe.ibm.com/infocenter/db2luw/v10r5/topic/com.ibm.db2.luw.apdv.sqlpl.doc/doc/c0053499.html

【讨论】:

  • 我不需要使用数组...目标是能够创建名称类似于 year_(这里是变量值)的表,并从选择的变量中获取值陈述。我只能想到在数组的帮助下做到这一点。也欢迎其他想法。
  • 在这种情况下,改变你的问题,或者创建一个新的问题来解释你想要什么,以及到目前为止你做了什么。因为您当前的代码令人困惑。
猜你喜欢
  • 2023-03-20
  • 2016-09-24
  • 1970-01-01
  • 1970-01-01
  • 2013-09-14
  • 1970-01-01
  • 1970-01-01
  • 2016-05-05
  • 2022-01-18
相关资源
最近更新 更多