![]() |
Datenbank: Firebird • Version: 2.1 • Zugriff über: UIB
rdb$set_context mit parametern verwenden
Hallo,
Mit dem Befehl
Code:
kann ich der Firebird-Sessionkontextvariable User_Id den Wert 12 zuweisen. Das funktioniert einwandfrei (der Rückgabewert des Select - 0 oder 1 - interessiert mich nicht).
'select rdb$set_context('USER_SESSION','User_Id',12) from rdb$database';
Es gelingt mir aber nicht, diesen Wert 12 via Params zu übergeben. Ich habe mich jetzt schon mit allem möglichen gespielt, mit manuellem Erzeugen des Parameters und mit DescribeBind - egal ob Integer oder Stringtyp, beim SQL-Aufruf bekomme ich eine Exception auf die Art "ungültiger Parametertyp". Weiss jemand, wie das mit der UIBLib funktioniert?. Es ist nicht sehr schlimm, ich erzeuge den SQL String jetzt einfach dynamisch, es hätte mich aber doch interessiert, wie das richtig gemacht wird. |
AW: rdb$set_context mit parametern verwenden
versuchs mal damit,
wenn deine Komponenten "EXECUTE BLOCK" verarbeiten können:
SQL-Code:
EXECUTE BLOCK (User_Id varchar(40) = :User_Id)
RETURNS ( User_Id2 varchar(40)) as begin RDB$SET_CONTEXT('USER_SESSION', 'User_Id', User_Id); User_Id2 = RDB$GET_CONTEXT('USER_SESSION', 'User_Id'); -- nur zum Test wieder auslesen suspend; end |
AW: rdb$set_context mit parametern verwenden
Danke für die Antwort - ein funktionierendes Workaround habe ich schon: ich erzeuge einfach den kompletten SQL Befehlsstring unmittelbar vor dem Aufruf und übergebe keine Parameter.
Was ich gerne gewusst hätte, ist, warum gerade bei diesem SQL Befehl die Parameterübergabe nicht so funktioniert wie bei allen anderen, die mir bisher untergekommen sind, und wie sie da funktioniert - weil vielleicht stolpere ich bei irgend einer ganz anderen Sache bei nächster Gelegenheit wieder über ein derartiges Problem. |
AW: rdb$set_context mit parametern verwenden
Hallo,
also mit IBDAC scheint es zu gehen.
Delphi-Quellcode:
Ich weiß aber nicht wirklich, ob dir das weiter hilft ;-)
IBCQuery1.SQL.Text := 'select rdb$set_context(''USER_SESSION'',''User_Id'',:TheId) from rdb$database';
IBCQuery1.Prepare; IBCQuery1.Params[0].DataType := ftInteger; IBCQuery1.Params[0].AsInteger := 12; IBCQuery1.Execute; Greez, Chris |
AW: rdb$set_context mit parametern verwenden
Hmm, wenn es mit IBDAC geht, müsste es mit der UIBLIB auch gehen, weil die ist eigentlich nur ein Wrapper um die Firebird API Aufrufe. Werde ich also in meinem Code weiter nach dem Fehler suchen, wenn ich Zeit dafür finde :)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz