Gespeicherten Prozedur in Oracle SQL-Developer
Ich bin mit SQL in Oracle zu erstellen eine gespeicherte Prozedur. Ich bin versucht, zu erstellen eine gespeicherte Prozedur, die SQL-Abfrage unter
SELECT "Merch"."Id", "Order"."Id", "Order"."OrderExt"
FROM "Order"
Join "Merch" ON "Order"."MerchId" = "Merch"."Id"
WHERE "Merch"."Id" = 25 AND "Order"."OrderExt" = 'TC10045604'
Will ich mit 2 inparameters zu vergleichen "Merch".Id" und "Order.OrderExt". Ich bin wirklich neu bei SQL-Oracle-und haben eine echte harte Zeit, herauszufinden, wie schreibt man dieses Verfahren.
Eines der Probleme, die ich habe, ist wie eine Rückkehr eine Tabelle mit "Merch"."Id", "Order"."Id", "Order"."OrderExt" ?
Verwende ich einen cursor in irgendeiner Weise?
Kann mir jemand helfen mit diesem problem?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnten Sie eine gespeicherte Prozedur schreiben, die ein OUT-parameter, das war ein
SYS_REFCURSOR
Wäre es mehr Natürliche, jedoch haben Sie eine gespeicherte Funktion, die zurückgegeben
SYS_REFCURSOR
Als eine Allgemeine Frage von Stil, mit groß-Kleinschreibung in Tabellen-und Spaltennamen ist sehr, sehr selten eine gute Idee. Und Tabellennamen entsprechen Oracle reservierte Worte wie
Order
ist auch weniger wahrscheinlich, eine gute Idee zu sein. Zwingt jeden Entwickler immer doppelte Anführungszeichen verwenden, um jeden Bezeichner und geben Sie immer in die richtige Fall wird führen zu deutlich mehr Fehler, als wenn Sie einfach die Standard-groß-und Kleinschreibung Konvention und vermeiden von reservierten Wörtern.Wie Sie sagten, Sie müssen 2 Parameter so filtern Sie Ihre Daten, indem
Merch.Id
undOrder.OrderExt
.Kehren Sie könnten die Ergebnisse mit einem SYS_REFCURSOR, zum Beispiel:
Dies ist, wie Sie sehen, Ergebnisse (stellen Sie sicher, Sie betrachten die Out-Registerkarte "Variablen" im SQL Developer):
Bearbeitet: Hinzugefügt: Beispiel für die Ausführung, Verbesserungen vorgenommen, wie Justin Höhle wies darauf hin,
"Merch"
würde es sich um eine case-sensitive Bezeichner. Übergabe inpMerchId
alsvarchar2
wenn"Merch"."Id"
ist einnumber
kann auch zu Problemen führen-Sie sind besser mit der"Merch"."Id"%type
"Merch"
Tabelle erstellt wurde, alsCREATE TABLE "Merch"...
und dass jede Referenz zu"Merch"
müssen double-quotes und muss groß-und Kleinschreibung werdenCREATE TABLE "Merch"...
dannSelect Merch
würde nur gut funktionieren, da der Fall auf beide passen.SELECT * FROM merch
ist identisch mitSELECT * FROM Merch
oderSELECT * FROM MERCH
). Wenn Sie ein Objekt definieren mit der groß-und Kleinschreibung Bezeichner, die Sie haben zu finden, um es mit einem case-sensitive Bezeichner für immer.