Einfach in teradata gespeicherte Prozedur
Web scheint ein bisschen kurz auf der Arbeit Beispiele für etwas, das sollte ganz normal sein. Ein plain Jane B. "Holen Sie mir einige Datensätze". Dies ist meine erste Gespeicherte Prozedur, und alles was ich will ist zu sehen, einige Datensätze. Warum ist das so blätterte schwer? 😉 Ich vermute, dass, wenn ich bekommen kann, ein Beispiel, das funktioniert, ich kann es einstellen von dort in etwas, was ich wirklich benutzen kann. Dieser wird aus einem anderen Beispiel, das ich auf dem web gefunden werden. Kann nicht kompiliert werden, weil der CURSOR-Deklaration ist ein syntax-Fehler irgendeiner Art ist.
CREATE PROCEDURE "SCHEMA"."GETRESULTSET (
IN "p1" VARCHAR(30))
DYNAMIC RESULT SETS 1
BEGIN
DECLARE CURSOR cur1 WITH RETURN ONLY TO CLIENT FOR
SELECT partitioninfo FROM SCHEMA.SessionInfo where username = p1;
OPEN cur1;
END;
Sowieso, könnte sicher ein Anhaltspunkt. Ich sah ein Beispiel, wo der CURSOR deklariert wurde getrennt von der SQL, aber dann es war nicht ein Beispiel, das zeigte, wie man die variable in der SQL wenn es war deklariert als VARCHAR. Die Beispiel ich arbeite aus der war ziemlich alt, aber es ist die beste die ich finden konnte.
InformationsquelleAutor user447607 | 2012-07-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einer Teradata-MAKROS wäre eine bessere Lösung für das, was Sie beschrieben haben.
Während einer gespeicherten Prozedur verwendet werden könnten, um die Aufgabe auszuführen, die cursor-basierte Logik verwendet, in anderen gängigen Datenbank-Systeme (Oracle, SQL-Server, etc.) kann dazu führen, schlechte Programmierung Gewohnheiten in Teradata. Generell ist die Verarbeitung von großen Cursor in Teradata wird die Leistung verringert. Viele Dinge, die Sie verwendet haben, cursor in anderen DBMS' besser bedient zu sein getan mit der SET-basierte Logik, wo möglich.
That being said Cursor erfolgreich eingesetzt werden kann, in Teradata, um bestimmte Aufgaben auszuführen, die erfordern, dass bedingte Logik oder dynamische SQL-Verarbeitung. Ich hoffe, das hilft und wenn Sie ein konkreteres Beispiel Sie Hilfe brauchen, würde ich Ihnen gerne einige Vorschläge.
Edit:
Diese DDL für Ihr Verfahren funktioniert mit Teradata 13.10:
Den cursor-name fahren Sie die CURSOR-Taste Wort. PartitionInfo ist keine gültige Spalte auf DBC.SessionInfo. Nicht sicher, ob "Schema" wird ersetzt durch MyBatis oder nicht, so müssen Sie möglicherweise zu zwicken die SELECT-Anweisung.
Grand Rapids, MI? Ich bin ursprünglich aus Davison, MI. 🙂
🙂 - Kleine Welt. Siehe mein edit für eine getestete version der Gespeicherten Prozedur ausgeführt, der mit Teradata 13.10. In meinem getestet Kopie ersetzt habe ich "SCHEMA".SessionInfo mit "DBC".SessionInfo.
Ja, ich hatte es herausgefunden auch, hatte aber keine Zeit gehabt zum aktualisieren der Beispiel. Dickes Lob an Sie. 🙂
InformationsquelleAutor Rob Paller