Procedimiento Almacenado con parametros
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 |
Creo que esto se puede solucionar con una tabla temporal (temp_id) y la sentencia execute statement.
Lo que hago es insertar el max(campoID) en la tabla temporal y luego hacer un select de ese campo. Finalmente, lo borro.
|
La franja horaria es GMT +2. Ahora son las 07:41:20. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi