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