-
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.
-
Views skulle vara ditt första verktyg för att modularisera vanliga frågor.
-
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
.