Ese mensaje en particular no sé a qué se refiere, pero en
general me parece que no se puede usar exec dentro de una
función. Sí dentro de un store procedure.
(Además veo que hay errores en el armado del query en sí,
pero eso es otro problema. La ubicación de la clausula into, los
campos insertados difieren con los campos de la tabla..., pero no es ese el
tema de la colgada).
Saludos, Daniel
-----Original
Message-----
From: "Julian Berlin" <[EMAIL PROTECTED]>
To:
"dbms List Member" <[email protected]>
Date: Thu, 12 Oct 2006
15:26:56 -0300
Subject: [dbms] Error al uUsar EXEC desde una funcion
Tengo el siguiente
problema , tengo la siguiente Query de SQL en donde uso la funcion EXEC()
para ejecutar una Quero dinámicamente:
--------------------------------------------------------------------------------------------------------------------------------------------------------------
CREATE FUNCTION dbo
.GetCountries
(
@QuerySearch VarChar
(8000)
)
RETURNS @Countries TABLE(CountryName
varchar(
50),
ClientName varchar
(50
) , AnnualicedA numeric(18,4)
,
AnnualicedB numeric
(18,4) ,MarketSharesA numeric(18,4)
,
MarketSharesB numeric
(18,4),evolution numeric(18,4)
)
AS
BEGIN
Declare @SQL VarChar
(8000)
--DECLARE
@Countries TABLE(Country varchar(50))
SET
@SQL
= 'SELECT DISTINCT
E_COUNTRY.X_country_name AS Country
FROM
E_GPS_CONTRACT LEFT OUTER JOIN E_COUNTRY ON
E_COUNTRY.Country_ID = E_GPS_CONTRACT.Country_ID
WHERE E_COUNTRY.X_country_name IS NOT NULL '
SET
@SQL
= @SQL +
@QuerySearch
+ 'INTO
@Countries'
Exec
( @SQL )
RETURN
END
GO
-------------------------------------------------------------------------------
Pero al querer
ejecutarlo me tira el siguiente error y no tengo idea que puede ser…:
Msg 443,
Level 16, State 14, Procedure GetCountries, Line 22
Invalid use
of side-effecting or time-dependent operator in 'EXECUTE STRING' within a
function.
Si alguien tiene idea
que puede ser lo agradecere
Saludos
Julián R Berlín
Hexacta
S.A.
tel. +54 11 4779
6326.
Andrés Arguibel 2860.
Buenos Aires, Argentina.