Ich habe 2 Funktionen Benutzer definiert, die eine Tabelle zurück: Können sagen, sie UDF1 und UDF2Sybase -User Defined Functions
select * from UDF1(param1)
-> gibt 1 Ergebnis
select * from UDF2(param2)
-> gibt 1 Ergebnis
Das Problem ist, wenn ich mache
select * from UDF1(param1) union all select * from UDF2(param2)
-returns nur 1 Ergebnis.
Idealerweise sollte es 2 Ergebnisse als eine Union alle zurückgeben.
Kann mir jemand helfen, warum dieses Verhalten in Sybase beobachtet wird?
Der genaue Code lautet wie folgt: Erstellt Funktion wie folgt:
EXEC SQL.
CREATE FUNCTION "ZCHECK_4" (
@COL3_VAL smallint
)
RETURNS TABLE (
"COL1" varchar(000030),
"COL2" varchar(000030),
"COL3" smallint
) AS RETURN SELECT
"ZTESTFUNC"."COL1",
"ZTESTFUNC"."COL2",
"ZTESTFUNC"."COL3"
FROM "ZTESTFUNC" "ZTESTFUNC"
WHERE "ZTESTFUNC"."COL3" = @COL3_VAL
ENDEXEC.
Finale Sql Ansicht -> Welche nur 1 Zeile
CREATE VIEW "ZCHECK_5" AS SELECT
"ZCHECK_4"."COL1",
"ZCHECK_4"."COL2",
"ZCHECK_4"."COL3"
FROM "ZCHECK_4"(
CAST(
20 AS TINYINT
)
) "ZCHECK_4"
UNION ALL SELECT
"ZCHECK_4"."COL1",
"ZCHECK_4"."COL2",
"ZCHECK_4"."COL3"
FROM "ZCHECK_4"(
CAST(
10 AS TINYINT
)
) "ZCHECK_4"
Hinweis ist returing: die zugrunde liegende Tabelle (ZTESTFUNC) hat 2 Datensätze, die ich validiere.
können Sie den Code für UDF1 & 2 einfügen – Meet
Vielleicht ist dies ein Fall, in dem zusätzliche (theoretisch nutzlose) Klammern helfen würden: '(wählen Sie * aus UDF1 (param1)) union all (wählen Sie * aus UDF2 (param2))' –