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.