Hola

Mira, te hablare en base a mi experiencia con DB.
No es obligado saber PL/SQL para programar una pagina con Oracle por ejemplo, eso que tu estas exponiendo de ejemplo, funciona perfectamente con simples 'Querys' o Peticiones a la base de datos. Si es obligatorio que sepas al menos lenguaje SQL (Que es un estandar que llevan todas las Base de datos relacionales) con dicho lenguaje de Consultas, haces tus peticiones en digase 'php' y php se conecta a la DB busca la peticion, la obtiene la guarda en variables y la imprime en pantalla en la pagina web.
Ahora, hay momentos que por comodidad, rapidez, o hasta economizar lineas de codigo cuando programas, es preferible crear 'procedimientos' o 'funciones' que forman parte del 'PL/SQL' el objetivo de usar PL/SQL es sencillamente como te expuse, guardar dentro de la DB un consulta larga dentro de un procedimiento por ejemplo:
Existe una Tabla con la siguiente informacion ::
Nombre Apellido Empleado Fecha
Juan Sanchez 23 24-JAN-08
Luis Lopez 25 30-SEPT-08
Y tu quieres consultar en tu DB mediante un lenguaje de programacion (usare Perl de ejemplo, no se PHP lo siento) una informacion, quieres obtener esa informacion , guardarla en variables he ejecutarlas por ejemplo. Haces esto en Perl :
#!/usr/bin/perl
use strict;
use DBI;
#Hacemos la conexión a la DB
my $conexión = DBI->connect('dbi:Oracle:ROQDB','usuario','contraseña', { AutoCommit => 1 }) or die "$DBI::errstr";
if ($conexión ne "$DBI::errstr")
{
my $consulta = qq{ SELECT * FROM empleados WHERE nombres LIKE 'J%' };
my $resultado = $conexión->prepare($consulta);
$resultado->execute();
my ($a, $b, $c);
$resultado->bind_columns(undef, \$a, \$b, \$c);
while($resultado->fetchrow())
{
print STDOUT "$a $b $c\n";
}
$resultado->finish();
$conexión->disconnect();
En el codigo anterior, mande a hacer un 'Query' a Oracle, donde digo que me busque y me imprima en pantalla, todos los usuarios que el encuentre que comienze con la letra J. Ahora esto aunque funciona perfectamente, es pesado volver a poner en cada linea de codigo la misma consulta una y otra vez
Consulta :
SELECT * FROM empleados WHERE nombres LIKE 'J%';
Esto no es factible para un programador ni para un DBA, imagina que te digan
Walter_rel hazme 20 lineas que consulten todos los empleados que comienzen con la letra J. Haras el codigo anterior 20 veces, en distintas horas del dia, una y otra vez.....
Es aqui donde entra el PL/SQL

En la base de datos hacemos por ejemplo esto :
SQL> select * from prueba;
CODIGO NOMBRES APELLIDOS EMAIL
---------- -------------------- -------------------- --------------------
85 Josefina Perez
91 Lulu Lopez
92 Pedro Rodriguez
3 Juan Lopez
5 luis Sanchez
7 Cynthia Santos
41 Eloisa Lopez
7 Juanita Lolo cucu@msn.com
41 Josefinat Elo cuci@msn.com
9 rows selected.
SQL> set serveroutput on
SQL> set echo on
SQL> create procedure funcion
2 is
3 codigo integer := 10;
4 palabra char(20);
5 begin
6 if codigo < 20 then
7 select translate(nombres, 'u', 'A')
8 into palabra
9 from prueba
10 where nombres like 'L%';
11 dbms_output.put_line('Usted Coloco' || '' || palabra);
12 elsif codigo > 20 then
13 select upper(nombres)
14 into palabra
15 from prueba
16 where nombres = 'Juan';
17 dbms_output.put_line('Ha Seleccionado' || '' || palabra);
18 else
19 dbms_output.put_line('No selecciono nada');
20 end if;
21 end;
22 /
Procedure created.
SQL> begin
2 funcion;
3 end;
4 /
Usted ColocoLAlA
PL/SQL procedure successfully completed.
SQL>
Hemos creado un 'procedure' procedimiento almacenado en Oracle, dicho procedimiento se llama 'funcion' y funcion guarda unas instrucciones, que se cumplen cada vez que la ejecutamos. Ahora nuestro codigo en Perl seria por ejemplo asi ::
#!/usr/bin/perl
use strict;
use DBI;
#Hacemos la conexión a la DB
my $conexión = DBI->connect('dbi:Oracle:ROQDB','usuario','contraseña', { AutoCommit => 1 }) or die "$DBI::errstr";
if ($conexión ne "$DBI::errstr")
{
my $consulta = qq{ BEGIN funcion; END; };
$conexión->do($consulta);
$conexión->disconnect();
vez como varia hasta el codigo en programacion???
Ahora tenemos una sentencia guardada, que solo la llamamos o ejecutamos con un simple
execute funcion; -- Si es en la DB
y un simple $conexión->do(variable) y ya esta.
En pocas palabras NO , no es obligatorio saber PL/SQL para hacer eso que dices, pero por comodidad y rapidez es preferible de vez en cuando tirar sus lineas de codigo PL/SQL. No siempre aplica, solo en ciertos casos donde por ejemplo necesitamos hacer una consulta de 30 lineas para obtener un resultado, para evitarnos lanzar esas 20 lineas nuevamente en otro momento, es preferible guardar esa consulta en un procedimiento y llamar al procedimiento por su nombre y ya esta
