根据 SQL 存储过程中的逗号分隔字符串动态创建表



我正在编写一个 SQL 存储过程,该过程将人口名称作为参数,根据人口名称创建一个表,然后填充该表。 只要我知道我提前传递给它多少个人口名称,它就很好用,但是当我事先不知道有多少人口时,我需要它来工作。

我将传递一个逗号分隔的字符串,我需要为该字符串中的每个值运行以下过程。 存储过程是一系列 Union All 语句,但我只包含下面的第一个语句。

DECLARE
    ID ALIAS FOR $1;
    POPULATION FOR $2;
    SQL VARCHAR(32000);
BEGIN
SQL:='CREATE TABLE DEMO_POPULATION_' ||POPULATION|| '_TABLE AS          
SELECT ' ||ID|| ' AS ID
  , '||POPULATION||' AS POPULATION
  , 'AGE' AS CATEGORY
  , MAX((SELECT AGE_MAX FROM ID_INSTANCE A JOIN DEMO_SOURCE B ON (A.ID = B.NAME) WHERE ID = ' ||ID|| ' AND POPULATION LIKE '||POPULATION||' )) AS VAL 
UNION ALL
...

我也在研究IBM Netezza ,我知道很多人都没有使用它。 因此,对一般SQL的响应会很棒,它不能是特定于SQL Server的东西。

请找到以下工作示例 -

BEGIN
       v_sql:='Create table empx (id int)';
       execute immediate v_sql; 
END;

相关内容

  • 没有找到相关文章

最新更新