Wie muss eine Oracle function aussehen, damit sie als datenquelle sichtbar wird

Ich habe allesmögliche ausprobiert, aber keine Oracle Function wird bei den Datenquellen unter Routine-Abfrage bearbeiten sichtbar…

Hallo Frank-Peter,

Um in diesem Fall eine Function als Datenquelle anmelden zu können, benötigen wir eine Tabelle als Rückgabe. Im Gegensatz zu Table-Valued Functions unterstüzt Oracle nur bei Stored Procedures die Tabellenrückgabe.

Ein kleines Beispiel:

CREATE OR REPLACE
PROCEDURE CustomersByCompany
(
  comname IN VARCHAR2 DEFAULT 'Doe Inc.',
  cr OUT SYS_REFCURSOR
) AS
BEGIN
  OPEN cr FOR
  SELECT * FROM customer c WHERE c.companyname = comname;
END;

Die Abfrage auf die Datenbank, um die Stored Procedure abzurufen sieht bei uns so aus:

SELECT procedures.object_name as RoutineName, procedures.object_type as RoutineType, args.argument_name as ParameterName, args.data_type as type, args.in_out as ParameterDirection
FROM user_procedures procedures
LEFT JOIN user_arguments args ON procedures.object_name = args.object_name
WHERE procedures.object_type = 'PROCEDURE'
ORDER BY args.position

Ich hoffe, das hilft weiter.

Hallo, vielen Dank für die Hilfe. Ich habe jetzt eine Stored Procedure in Oracle erstellt und diese wird auch im Report Designer sichtbar.


Was muss ich bei dem Parameter Ref Cursor eingeben, damit ich diese Routine im Designer als Tabelle verwenden kann? Zur Zeit kriege ich immer eine Fehlermeldung.

Gibt es irgendwo eine Dokumentation oder ein Beispiel für die Verwendung von Stored Procs im Reportserver ?

Ein Oracle-spezifisches Beispiel steht derzeit leider nicht zur Verfügung. Eine allgemeine Dokumentation zu Konfigurationseinstellungen von SQL-Datenbanken findet sich hier.

Für weitere Untersuchungen wäre die vollständige Fehlermeldung mit Kontext hilfreich. Wann und wo genau tritt die Fehlermeldung auf? Direkt beim Testen der Routineabfrage oder später beim Hinzufügen der Datenquelle im Designer? Eventuell erst beim Druck/Export über den Report Server?

Problem scheint gelöst…ich hatte den ersten Parameter als numerisch vereinbart und dann als vorgabewert NULL stehen lassen…was dann zum Fehler führte…

Danke für die Hilfe…

1 Like

Nächstes Problem: Ich habe die Datenquelle jetzt in einen Report eingebunden…wie kriege ich die Wert aus dem Berichtsparameter in die stored proc ?

Nachdem ich in der Datenquelle einen Parameter definiert habe, hatte ich gehofft, dass dieser bei Verwendung der Datenquelle gleich als Berichtsparameter angelegt ist…

Guten Morgen Frank-Peter,

du müsstest den Bericht mit der entsprechenden Datenquelle nocheinmal im Designer öffnen und erneut speichern. Dabei werden dann die Berichtsparameter angelegt.

Viele Grüße
Martin