raorre
30-12-2008, 09:12:13
Buenas..trabajo en firebird 2.1 tengo un procedimiento almacenado donde los parametros de entrada deberian de pasarse como el campo a buscar y la tabla donde buscar, lo que hace este procedimiento en obtener al maximo de la tabla clientes, pero quiero hacerlo general para cualquier tabla.
Como esta abajo funciona, pero si le paso estos parametros me dice que no
FOR SELECT MAX(:CAMPOID) AS REGISTROS FROM :TABLA
Como puedo pasarle los parametros a la tabla y que no me pete, debe ser
un problema de comillas pero no consigo resolverlo.
CREATE PROCEDURE OBTENER_MAXIMO(
TABLA VARCHAR(50) CHARACTER SET NONE COLLATE NONE,
CAMPOID VARCHAR(50) CHARACTER SET NONE COLLATE NONE)
RETURNS(NUMREG INTEGER)
AS
DECLARE VARIABLE CONTADOR INTEGER;
BEGIN
FOR SELECT MAX(ID_CLIENTE) AS REGISTROS FROM TCLIENTES
WHERE 1=1
INTO :CONTADOR DO
BEGIN
IF (:CONTADOR=0) THEN NUMREG=1;
ELSE NUMREG=CONTADOR+1;
SUSPEND;
END
END
Como esta abajo funciona, pero si le paso estos parametros me dice que no
FOR SELECT MAX(:CAMPOID) AS REGISTROS FROM :TABLA
Como puedo pasarle los parametros a la tabla y que no me pete, debe ser
un problema de comillas pero no consigo resolverlo.
CREATE PROCEDURE OBTENER_MAXIMO(
TABLA VARCHAR(50) CHARACTER SET NONE COLLATE NONE,
CAMPOID VARCHAR(50) CHARACTER SET NONE COLLATE NONE)
RETURNS(NUMREG INTEGER)
AS
DECLARE VARIABLE CONTADOR INTEGER;
BEGIN
FOR SELECT MAX(ID_CLIENTE) AS REGISTROS FROM TCLIENTES
WHERE 1=1
INTO :CONTADOR DO
BEGIN
IF (:CONTADOR=0) THEN NUMREG=1;
ELSE NUMREG=CONTADOR+1;
SUSPEND;
END
END