Einzelnen Beitrag anzeigen

Benutzerbild von IBExpert
IBExpert

Registriert seit: 15. Mär 2005
672 Beiträge
 
FreePascal / Lazarus
 
#7

AW: Stored Prodeure mit in im Select

  Alt 9. Feb 2020, 18:53
in Operatoren sind nicht immer die beste lösung, es gibt aber mehrere workarounds neben der schon erwähnten, das als string zusammenzubauen und dann mit execute statement zu arbeiten

Ich mach das mittlerweile meistens so, das die parameter in eine GTT (global temporary table) gepackt werden und dann ganz normal an den restlichen SQL gejoint wird.

alternatv kannst du wenn du den parameter in die sp als String übergibst und diese einen defininerten Trenner hat auch so was machen, das aber nur für kleinen datenmenge sinnvoll.

select * from sp(';1;5;7;9;')

...

create procedure sp
(p varchar(800))
as
begin
for select id from tab where :p containing ';'||tab.id||';' into .....
....
end

Bei der Lösung mit der gtt klappt das auch mit dem optimierer sehr gut, beim 2. vorschlag hast du immer full table scan, aber bei kleiner Tabellen kann das durchaus ok sein.
Holger Klemt
www.ibexpert.com - IBExpert GmbH
Oldenburger Str 233 - 26203 Wardenburg - Germany
IBExpert and Firebird Power Workshops jederzeit auch als Firmenschulung
  Mit Zitat antworten Zitat