我正在编写一个SQL存储过程,它接受一个填充名称作为参数,根据填充名称创建一个表,然后填充该表。只要我知道我提前传递了多少人口名称,它就能很好地工作,但是当我不知道有多少人口提前工作时我需要这个。
我将传递逗号分隔的字符串,我需要以下过程来为该字符串中的每个值运行。存储过程是一系列Union Union语句,但我只包括下面的第一个。
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特有的。
答案 0 :(得分:0)
请查看以下工作示例 -
BEGIN
v_sql:='Create table empx (id int)';
execute immediate v_sql;
END;