是否可以联合两个 EXECUTE BLOCK 语句?
Is it possible to UNION two EXECUTE BLOCK statements?
有没有办法执行 2 个集的并集,其中两个集都由 2 个不同的执行块命令输出?
集合结构相同,但每个包含不同的参数,因此我不能轻易地将两者合并到一个执行块命令中。
例如
EXECUTE BLOCK RETURNS -- set 1
AS DECLARE VARIABLE....my sql 1
BEGIN
FOR
..... my sql 1
DO
BEGIN
FOR
..... my sql 1
DO BEGIN
SUSPEND;
END
END
END UNION
EXECUTE BLOCK RETURNS -- set 2
AS DECLARE VARIABLE....my sql 2
BEGIN
FOR
..... my sql 2
DO
BEGIN
FOR
..... my sql 2
DO BEGIN
SUSPEND;
END
END
END
EXCUTE BLOCK
不能用在 UNION
中。只有 SELECT
可以参加 UNION
。如果你想合并两个 PSQL 块的结果,你需要将它们创建为可选择的存储过程,而不是临时的 EXECUTE BLOCK
语句。使用两个可选择的存储过程,然后您可以应用 UNION
:
select * from procedure1
union
select * from procedure2
或者,如果您确实需要使用 EXECUTE BLOCK
,那么您需要创建一个 EXECUTE BLOCK
来创建完整的输出。我看不出是什么阻止你创建一个单一的执行块:如果参数不同,那么你只需要为其中一个添加单独的参数,或者 - 如果它是关于输出参数 - 重命名事物以使它们都可以使用。
有没有办法执行 2 个集的并集,其中两个集都由 2 个不同的执行块命令输出?
集合结构相同,但每个包含不同的参数,因此我不能轻易地将两者合并到一个执行块命令中。
例如
EXECUTE BLOCK RETURNS -- set 1
AS DECLARE VARIABLE....my sql 1
BEGIN
FOR
..... my sql 1
DO
BEGIN
FOR
..... my sql 1
DO BEGIN
SUSPEND;
END
END
END UNION
EXECUTE BLOCK RETURNS -- set 2
AS DECLARE VARIABLE....my sql 2
BEGIN
FOR
..... my sql 2
DO
BEGIN
FOR
..... my sql 2
DO BEGIN
SUSPEND;
END
END
END
EXCUTE BLOCK
不能用在 UNION
中。只有 SELECT
可以参加 UNION
。如果你想合并两个 PSQL 块的结果,你需要将它们创建为可选择的存储过程,而不是临时的 EXECUTE BLOCK
语句。使用两个可选择的存储过程,然后您可以应用 UNION
:
select * from procedure1
union
select * from procedure2
或者,如果您确实需要使用 EXECUTE BLOCK
,那么您需要创建一个 EXECUTE BLOCK
来创建完整的输出。我看不出是什么阻止你创建一个单一的执行块:如果参数不同,那么你只需要为其中一个添加单独的参数,或者 - 如果它是关于输出参数 - 重命名事物以使它们都可以使用。