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

基于SQL存储过程中的逗号分隔字符串动态创建表,sql,stored-procedures,netezza,Sql,Stored Procedures,Netezza,我正在编写一个SQL存储过程,它将填充名称作为参数,基于填充名称创建一个表,然后填充该表。只要我知道我提前传递给它的人口名称有多少,它就工作得很好,但当我不知道提前有多少人口时,我需要它来工作 我将传递一个逗号分隔的字符串,我需要为该字符串中的每个值运行以下过程。存储过程是一系列Union All语句,但我只包括下面的第一个语句 DECLARE ID ALIAS FOR $1; POPULATION FOR $2; SQL VARCHAR(32000); BEGIN SQ

我正在编写一个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
...

我也在使用IBMNetezza,我知道很多人都不使用它。因此,对通用SQL的响应将非常好,它不可能是SQL Server特有的东西。

请查找以下工作示例-

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

对于存储过程,没有通用的SQL。