CREATE PROCEDURE c AS
BEGIN
var_tab = SELECT customer_id FROM table_A ;
select * from :var_tab;
END;
如果结果包含实际的表名,则必须使用动态sql,并且可以以数组形式访问表变量值:
CREATE PROCEDURE b AS
BEGIN
var_tab = SELECT customer_id FROM table_A ;
EXECUTE IMMEDIATE ' select * from '||:var_tab.customer_id[1];
END;
或使用标量变量:
CREATE PROCEDURE a AS
BEGIN
DECLARE var_tab nvarchar(20);
SELECT customer_id INTO var_tab FROM table_A ;
EXECUTE IMMEDIATE ' select * from '||var_tab;
END;
1条答案
按热度按时间i34xakig1#
取决于您的用例:
可以像使用临时表一样使用表变量,也可以不使用动态sql:
如果结果包含实际的表名,则必须使用动态sql,并且可以以数组形式访问表变量值:
或使用标量变量: