Fórum stored procedure nome da tabela #56120
05/06/2006
0
Como eu faco ter como parametro de entrada em uma procedure o nome da tabela tipo assim:
SET TERM ^ ;
CREATE PROCEDURE APURA_ITEMM (
DATA_INICIAL DATE,
DATA_FINAL DATE,
[b:6f2cf5dae9] TABELA1 varchar(20),
TABELA2 varchar(20))[/b:6f2cf5dae9]
RETURNS (
CODIGO INTEGER,
DESCRICAO VARCHAR(60),
QUANTIDADE INTEGER)
AS
BEGIN
if ([b:6f2cf5dae9]TABELA2[/b:6f2cf5dae9] is null) then BEGIN
FOR SELECT COD_PRODUTO,NOM_PRODUTO,COUNT(QTD_QUANTIDADE)
FROM [b:6f2cf5dae9]:TABELA1[/b:6f2cf5dae9]
WHERE CAST(DAT_EMISSAO AS DATE) BETWEEN :DATA_INICIAL AND :DATA_FINAL
GROUP BY 1,2
ORDER BY 3 DESC
INTO :CODIGO,:DESCRICAO,:QUANTIDADE
DO SUSPEND;
END
ELSE BEGIN
FOR SELECT COD_PRODUTO,NOM_PRODUTO,COUNT(QTD_QUANTIDADE)
FROM [b:6f2cf5dae9]:TABELA1[/b:6f2cf5dae9]
WHERE CAST(DAT_EMISSAO AS DATE) BETWEEN :DATA_INICIAL AND :DATA_FINAL
GROUP BY 1,2
UNION ALL
SELECT COD_PRODUTO,NOM_PRODUTO,COUNT(QTD_QUANTIDADE)
FROM [b:6f2cf5dae9]:TABELA2[/b:6f2cf5dae9]
WHERE CAST(DAT_EMISSAO AS DATE) BETWEEN :DATA_INICIAL AND :DATA_FINAL
GROUP BY 1,2
ORDER BY 3 DESC
INTO :CODIGO,:DESCRICAO,:QUANTIDADE
DO SUSPEND;
END
END
^
SET TERM ; ^
Agradeco desde ja qualquer ajuda
SET TERM ^ ;
CREATE PROCEDURE APURA_ITEMM (
DATA_INICIAL DATE,
DATA_FINAL DATE,
[b:6f2cf5dae9] TABELA1 varchar(20),
TABELA2 varchar(20))[/b:6f2cf5dae9]
RETURNS (
CODIGO INTEGER,
DESCRICAO VARCHAR(60),
QUANTIDADE INTEGER)
AS
BEGIN
if ([b:6f2cf5dae9]TABELA2[/b:6f2cf5dae9] is null) then BEGIN
FOR SELECT COD_PRODUTO,NOM_PRODUTO,COUNT(QTD_QUANTIDADE)
FROM [b:6f2cf5dae9]:TABELA1[/b:6f2cf5dae9]
WHERE CAST(DAT_EMISSAO AS DATE) BETWEEN :DATA_INICIAL AND :DATA_FINAL
GROUP BY 1,2
ORDER BY 3 DESC
INTO :CODIGO,:DESCRICAO,:QUANTIDADE
DO SUSPEND;
END
ELSE BEGIN
FOR SELECT COD_PRODUTO,NOM_PRODUTO,COUNT(QTD_QUANTIDADE)
FROM [b:6f2cf5dae9]:TABELA1[/b:6f2cf5dae9]
WHERE CAST(DAT_EMISSAO AS DATE) BETWEEN :DATA_INICIAL AND :DATA_FINAL
GROUP BY 1,2
UNION ALL
SELECT COD_PRODUTO,NOM_PRODUTO,COUNT(QTD_QUANTIDADE)
FROM [b:6f2cf5dae9]:TABELA2[/b:6f2cf5dae9]
WHERE CAST(DAT_EMISSAO AS DATE) BETWEEN :DATA_INICIAL AND :DATA_FINAL
GROUP BY 1,2
ORDER BY 3 DESC
INTO :CODIGO,:DESCRICAO,:QUANTIDADE
DO SUSPEND;
END
END
^
SET TERM ; ^
Agradeco desde ja qualquer ajuda
Ronaldomr
Curtir tópico
+ 0
Responder
Posts
06/06/2006
Thomaz_prg
Você pode usar EXECUTE STATEMENT...
FOR EXECUTE STATEMENT ´SELECT CAMPO FROM ´||:TABELA1||´ WHERE ...´
FOR EXECUTE STATEMENT ´SELECT CAMPO FROM ´||:TABELA1||´ WHERE ...´
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)