Array
(
)

usando variável de uma função

Rafa-martin
   - 29 set 2006

eu tenho uma função onde passo esses parametros:

CREATE FUNCTION DBO.FN_RETORNA_PAIS_UNIDADE_ORGANIZACIONAL_RISCO
(
@cUndOrgnzPai DECIMAL = NULL,
@cVrsaoUndOrgnzPai DECIMAL = NULL,
@NivelHierarquia INT = NULL,
@ReturnMe SMALLINT = NULL
) RETURNS @TABELA_RETORNO TABLE
(
cUndOrgnzRisco decimal(10,0),
cVrsaoUndOrgnzRisco decimal(5,0),
rUndOrgnzRisco char(40),
cUndOrgnzPai decimal(10,0),
cVrsaoUndOrgnzPai decimal(5,0),
cdNvelUndOrgnz decimal(1,0), cSgmto decimal(2,0),
cNvelHierq decimal (2,0)
)

e no parametro vermleho eu tenho que passar um valor para trazer na consulta.

estu tentando fanzemdo assim no select:

#Código

FROM 
dbo.FN_RETORNA_PAIS_UNIDADE_ORGANIZACIONAL_RISCO (null, null, null, null), 
if FN_RETORNA_PAIS_UNIDADE_ORGANIZACIONAL_RISCO.cdNvelUndOrgnz = 1 or FN_RETORNA_PAIS_UNIDADE_ORGANIZACIONAL_RISCO.cdNvelUndOrgnz = 2
begin
dbo.TPLANOACAO INNER JOIN dbo.TINVENTARIORISCO ON dbo.TPLANOACAO.CINVNTRISCO = 
dbo.TINVENTARIORISCO.CINVNTRISCO INNER JOIN dbo.tDadoFunclFuncRisco ON 
dbo.TINVENTARIORISCO.cFuncBdsco = dbo.tDadoFunclFuncRisco.cFuncBdsco AND 
dbo.TINVENTARIORISCO.cVrsaoFunc = dbo.tDadoFunclFuncRisco.cVrsaoFunc
end

só que me dá um erro de sintaxe. só que antes de fazer o if tem a vírgula, porém já tirei e continua me dando o mesmo erro.

essa parte realmente não sei como fazer. como seria?

Rafa-martin
   - 29 set 2006

pessoal isso eu já consengui arrumar.

estou com um outro problema. olhem só:

dbo.FN_RETORNA_PAIS_UNIDADE_ORGANIZACIONAL_RISCO (null, null, null, null) as D

completo está assim:
dbo.FN_RETORNA_PAIS_UNIDADE_ORGANIZACIONAL_RISCO (null, null, null, null) as D
on (TINVENTARIORISCO.cUndOrgnzRisco = D.cUndOrgnzRisco
and dbo.TINVENTARIORISCO.cVrsaoUndOrgnzRisco = D.cVrsaoUndOrgnzRisco and D.cdNvelUndOrgnz = 2)
dbo.TPLANOACAO INNER JOIN dbo.TINVENTARIORISCO ON dbo.TPLANOACAO.CINVNTRISCO =
dbo.TINVENTARIORISCO.CINVNTRISCO INNER JOIN dbo.tDadoFunclFuncRisco ON
dbo.TINVENTARIORISCO.cFuncBdsco = dbo.tDadoFunclFuncRisco.cFuncBdsco AND
dbo.TINVENTARIORISCO.cVrsaoFunc = dbo.tDadoFunclFuncRisco.cVrsaoFunc

só que está me dando erro de sintaxe. esse erro: Incorrect syntax near the keyword ´on´..

e é na linha que está em verde.

pq do erro?

Rafa-martin
   - 29 set 2006

galera consegui.

ficou assim:

depois da cláusula from

#Código

(select * from FN_RETORNA_PAIS_UNIDADE_ORGANIZACIONAL_RISCO (null, null, null, null)) AS D
ON (DBO.TINVENTARIORISCO.cUndOrgnzRisco = D.cUndOrgnzRisco 
AND TINVENTARIORISCO.cVrsaoUndOrgnzRisco = D.cVrsaoUndOrgnzRisco AND D.cdNvelUndOrgnz = 2)