Documente Academic
Documente Profesional
Documente Cultură
Introduccin.Definiciones
Esteobraestbajounalicencia:CreativeCommonsReconocimientoCompartirIgual3.0
characteristic:
LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
| COMMENT 'string'
routine_body:
procedimientos almacenados o comandos SQL vlidos
Pordefecto,larutinaseasociaconlabasededatosactual.
Paraasociarlarutinaexplcitamenteconunabasededatos,especifiqueel
nombrecomodb_name.sp_namealcrearlo.
La clusula RETURNS puede especificarse slo con FUNCTION, donde es
obligatorio.Seusaparaindicareltipoderetornodelafuncin,yelcuerpodela
funcindebeconteneruncomandoRETURNvalue.
Lalistadeparmetrosentreparntesisdebeestarsiemprepresente.
Sinohayparmetros,sedebeusarunalistadeparmetrosvaca().
Cada parmetro es un parmetro IN por defecto. Para especificar otro tipo
de parmetro, use la palabra clave OUT o INOUT antes del nombre del
parmetro.
INOUTsloesvalidoparaunaPROCEDURE?.....
Un procedimiento o funcin se considera determinista si siempre produce el
mismo resultado para los mismos parmetros de entrada, y no determinista en
cualquierotrocaso.SinosedaniDETERMINISTICniNOTDETERMINISTICpor
defectoesNOTDETERMINISTIC.
Varias caractersticas proporcionan informacin sobre la naturaleza de los datos
usadosporlarutina.CONTAINSSQLindicaquelarutinanocontienecomandos
que leen o escriben datos. NO SQL indica que la rutina no contiene comandos
SQL.READSSQLDATAindicaquelarutinacontienecomandosqueleendatos,
peronocomandosqueescribendatos.MODIFIESSQLDATAindicaquelarutina
contiene comandos que pueden escribir datos. CONTAINS SQL es el valor por
defectosinosedanexplcitamenteningunadeestascaractersticas.
LacaractersticaSQLSECURITYpuedeusarseparaespecificarsilarutinadebe
serejecutadausandolospermisosdelusuarioquecrealarutinaoelusuarioque
la invoca. El valor por defecto es DEFINER. Esta caracterstica es nueva en
SQL:2003.Elcreadoroelinvocadordebentenerpermisosparaaccederalabase
de datos con la que la rutina est asociada. Desde MySQL 5.0.3, es necesario
tener el permiso EXECUTE para ser capaz de ejecutar la rutina. El usuario que
debe tener este permiso es el definidor o el invocador, en funcin de cmo la
caractersticaSQLSECURITY.
La clusula COMMENT es una extensin de MySQL, y puede usarse para
describirelprocedimientoalmacenado.
Esta informacin se muestra con los comandos SHOW CREATE
PROCEDUREySHOWCREATEFUNCTION.
Importante:
Elcomandodelimiterparacambiareldelimitadordelcomandodea otro
mientrassedefineelprocedimiento.
Esto permite pasar el delimitador usado en el cuerpo del procedimiento a
travsdelservidorenlugardeserinterpretadoporelmismomysql.
Ejemplosderutinas:
Ejemplosdedeclaracindefuncionesyprocedimientos
mysql> delimiter //
mysql> CREATE PROCEDURE simpleproc (OUT param1 INT)
-> BEGIN
-> SELECT COUNT(*) INTO param1 FROM t;
-> END
-> //
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter ;
mysql> SET @a=0; //Declaramos la variable de SESION @a.
mysql> CALL simpleproc(@a);
Query OK, 0 rows affected (0.00 sec)
.
.
Ejercicio040201:Pruebayverificalasrutinas.
.
.
ALTERPROCEDUREyALTERFUNCTION
Seusaparamodificaciones
ALTER {PROCEDURE | FUNCTION} sp_name [characteristic ...]
characteristic:
{ CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
| COMMENT 'string'
DROPPROCEDUREyDROPFUNCTION
Seusaparaborrados
DROP {PROCEDURE | FUNCTION} [IF EXISTS] sp_name
SHOWCREATEPROCEDUREySHOWCREATEFUNCTION
Este comando es una extensin de MySQL . Similar a SHOW CREATE TABLE,
retornalacadenaexactaquepuedeusarsepararecrearlarutinanombrada.
Ejercicio040202:MuestralasrutinasconSHOWCREATE.
.