Ver Mensaje Individual
  #1  
Antiguo 17-12-2013
Avatar de Matorral
Matorral Matorral is offline
Miembro
 
Registrado: oct 2006
Ubicación: Ferrol-Galicia
Posts: 35
Reputación: 0
Matorral Va por buen camino
pasar nombre de tabla como parametro a procedimiento almacenado

Hola amigos.

Trabajo con Delphi 7 (desde hace bastante tiempo) y bases de datos mySQL (desde hace muuuuuy poco tiempo).

Hice un procedimiento almacenado muy sencillo desde phpMyAdmin en el que intento pasar como parametros
el nombre de una tabla y el nombre de un campo para que me devuelva el valor maximo de ese campo.

en phpMyAdmin :
Código SQL [-]
DROP  PROCEDURE  `Nuevo_Codigo` ;   
CREATE  DEFINER  =  `root`@`localhost`  
PROCEDURE  `Nuevo_Codigo` (  IN  `tabla` VARCHAR( 50  )  CHARSET utf8,  IN  `campo` VARCHAR( 50  )  CHARSET utf8, OUT `cod` VARCHAR( 20  )  CHARSET utf8 ) 
   NOT  DETERMINISTIC READS SQL DATA SQL  SECURITY  DEFINER   
  SELECT max(  `campo`  )  +1 INTO cod FROM  `tabla`

y luego en Delphi (utilizo myDAC):

Código Delphi [-]
qry_Nuevo_Codigo:=TMyQuery.Create(Self);    
try 
  qry_Nuevo_Codigo.Connection:=myConnection; 
  qry_Nuevo_Codigo.SQL.Text:='Call nuevo_Codigo(:tabla,:campo,@UltimoCodigo);'; 
  qry_Nuevo_Codigo.ParamByName('tabla').AsString:='categorias';     
  qry_Nuevo_Codigo.ParamByName('campo').AsString:='codigo';     
  qry_Nuevo_Codigo.Execute;     
  UltimoCodigo:=qry_Nuevo_Codigo.ParamByName('cod').AsString;   
finally     
  qry_Nuevo_Codigo.Free;   
end;

La cuestión es que salta un error al hacer el Execute que dice :

Table 'produccion.tabla' doesn't exist

En phpMyAdmin ya he probado a poner

Código SQL [-]
From :tabla ..
From @tabla ..
From `:tabla` ..

pero da error el phpMyAdmin y no genera el procedimiento almacenado.

Alguien ha intentado pasar el nombre de una tabla como parametro y lo ha conseguido??

Gracias, y perdón por el ladrillo.
__________________
Inieeeesssstademiviiiiidaaaaa.
Responder Con Cita