sql >> Databasteknik >  >> RDS >> Oracle

Är det tillåtet att använda en SELECT i en pipelined PL/SQL-tabellfunktion?

  1. vanligtvis gäller DML-begränsningar endast modifieringssatser (UPDATE, DELETE ...) så SELECT bör vara OK. Jag ska försöka hitta ett specifikt uttalande från Oracle.

  2. Views skulle vara ditt första verktyg för att modularisera vanliga frågor.

  3. Funktioner har en nackdel jämfört med vyer:om de anropas från en annan SELECT exekveras de inte vid samma tidpunkt som den huvudsakliga SELECT. Varje anrop till en SELECT är konsekvent men eftersom SELECT finns i funktionskoden och inte i huvud-SQL kan du returnera inkonsekventa resultat. Detta är inte möjligt med vyer och underval:om ett stort uttalande anropar en vy byggs vyn vid samma tidpunkt som huvudfrågan.

Uppdatera :angående din kommentar om parameteriserade frågor

Du kan bygga parametriserade vyer, det vill säga vyer som är beroende av variabler som ställts in före exekvering. Här är ett exempel på AskTom visar hur du kan göra det med userenv('client_info') eller dbms_session.set_context .




  1. Ordningen för en SQL Select-sats utan Order By-sats

  2. Hur man löser detta datauppdateringsfel i Laravel

  3. Föråldrade funktioner att ta ur din verktygslåda – Del 2

  4. Skickar array till Oracle-proceduren från c#