Stored Procedure com Filtro
Bom dia a todos,
Tenho a seguinte Stored Procedure:
CREATE PROCEDURE retrna_compania
(
PUF VARCHAR(2)
)
RETURNS (
COD INTEGER,
NOME VARCHAR(10),
UF VARCHAR(2)
)
AS
BEGIN
FOR
SELECT COD, NOME, UF
FROM COMPANIA
INTO :COD, :NOME, :UF
DO
SUSPEND;
END
Como modifico essa SP para que se o parametro ´PUF´ nao estiver vazio ele adiciona um filtro no select como : ´WHERE UF = :PUF´ ??
Tentei colocar:
IF (PUF <> ´´) THEN
WHERE UF = :PUF
Mas nao funcionou. Como faço ?? Obrigado
Tenho a seguinte Stored Procedure:
CREATE PROCEDURE retrna_compania
(
PUF VARCHAR(2)
)
RETURNS (
COD INTEGER,
NOME VARCHAR(10),
UF VARCHAR(2)
)
AS
BEGIN
FOR
SELECT COD, NOME, UF
FROM COMPANIA
INTO :COD, :NOME, :UF
DO
SUSPEND;
END
Como modifico essa SP para que se o parametro ´PUF´ nao estiver vazio ele adiciona um filtro no select como : ´WHERE UF = :PUF´ ??
Tentei colocar:
IF (PUF <> ´´) THEN
WHERE UF = :PUF
Mas nao funcionou. Como faço ?? Obrigado
Fredy992
Curtidas 0
Respostas
Sremulador
24/08/2005
amigo eu já passei por isso, tive que fazer com a centença inteira tipo
if campo is null then begin
....
....
end else begin
....
....
end
se alguem tiver uma solução melhor estamos ai...
if campo is null then begin
....
....
end else begin
....
....
end
se alguem tiver uma solução melhor estamos ai...
GOSTEI 0
Fredy992
24/08/2005
Vc faria assim então ??? :
CREATE PROCEDURE retrna_compania
(
PUF VARCHAR(2)
)
RETURNS (
COD INTEGER,
NOME VARCHAR(10),
UF VARCHAR(2)
)
AS
BEGIN
IF (PUF <> ´´) THEN
BEGIN
FOR
SELECT COD, NOME, UF
FROM COMPANIA
WHERE UF = :PUF
INTO :COD, :NOME, :UF
DO
END ELSE
BEGIN
FOR
SELECT COD, NOME, UF
FROM COMPANIA
INTO :COD, :NOME, :UF
DO
END;
SUSPEND;
END
CREATE PROCEDURE retrna_compania
(
PUF VARCHAR(2)
)
RETURNS (
COD INTEGER,
NOME VARCHAR(10),
UF VARCHAR(2)
)
AS
BEGIN
IF (PUF <> ´´) THEN
BEGIN
FOR
SELECT COD, NOME, UF
FROM COMPANIA
WHERE UF = :PUF
INTO :COD, :NOME, :UF
DO
END ELSE
BEGIN
FOR
SELECT COD, NOME, UF
FROM COMPANIA
INTO :COD, :NOME, :UF
DO
END;
SUSPEND;
END
GOSTEI 0
Starfox
24/08/2005
vc poderia fazer assim:
AS
BEGIN
FOR
SELECT COD, NOME, UF
FROM COMPANIA
INTO :COD, :NOME, :UF
WHERE (:PUF IS NULL OR (UF = :PUF))
DO
SUSPEND;
END
AS
BEGIN
FOR
SELECT COD, NOME, UF
FROM COMPANIA
INTO :COD, :NOME, :UF
WHERE (:PUF IS NULL OR (UF = :PUF))
DO
SUSPEND;
END
GOSTEI 0