Il est en fait possible d'appeler des procédures stockées ou des fonctions via dg4odbc. J'ai testé Database Gateway pour MS SQL Server , et il n'a pas réussi à prendre en charge nativement les fonctions de table/scalaire de Sql Server. Les deux doivent s'appuyer sur DBMS_HS_PASSTHROUGH.EXECUTE_IMMEDIATE pour cette fonctionnalité. Nous devions récupérer l'id des lignes insérées :
DECLARE
RESULT NUMBER(8,2);
val INTEGER;
c INTEGER;
nr INTEGER;
BEGIN
RESULT := [email protected]('select SCOPE_IDENTITY();');
c := [email protected];
[email protected](c, 'select @@IDENTITY');
LOOP
nr := [email protected](c);
EXIT WHEN nr = 0;
[email protected](c, 1, val);
END LOOP;
[email protected](c);
DBMS_OUTPUT.PUT_LINE('retrieved: ' || val);
END;