Funciones escalares en Sql Dinámico

18/06/2006 - 20:10 por Merichel | Informe spam
Hola a todos !

Estoy intentando hacer esta consulta en sql dinámico dentro de un
procedimiento. Quiero obtener el valor máximo de un campo (orden) de
una tabla y luego utilizar ese valor en el procedimiento. Al ejecutar
el procedimiento me da el siguiente error: "variable @ordenOUT must be
declared". Yo creo que ya está declarada en el execute sp_executesql.
Aún así he probado a declararla también arriba y sigue dando el
mismo error. Lo más curioso es que me imprime el valor de @orden
correctamente, pero me da el error y no me ejecuta el resto del
procedimiento. ¿Alquién sabe qué estoy haciendo mal?

declare @orden varchar(10)
set @strGetOrden=N'select @ordenOUT=max(orden) from '+ @tabla
execute sp_executesql @strGetOrden,N'@ordenOUT nvarchar(10)
output',@ordenOUT=@orden output

print @orden

if @orden is null
set @orden=1
else
set @orden=@orden + 1


Gracias de antemano.

Un saludo.

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
19/06/2006 - 14:03 | Informe spam
Merichel,

Cual es el tipo de dato de la columna [orden]?

Si estas sumandole 1 al valor de salida, entonces me have pensar que ese
valor es entero. Pudieras probar declarando las variables @orden y @ordenOUT
como int?

Ejemplo:

use northwind
go

declare @orden int
declare @tabla sysname
declare @strGetOrden nvarchar(4000)

set @tabla = N'[dbo].[orders]'
set @strGetOrden=N'select @ordenOUT=max(orderid) from '+ @tabla

execute sp_executesql @strGetOrden,N'@ordenOUT int output', @ordenOUT =
@orden output

print @orden

if @orden is null
set @orden=1
else
set @orden = @orden + 1
go


AMB


"Merichel" wrote:

Hola a todos !

Estoy intentando hacer esta consulta en sql dinámico dentro de un
procedimiento. Quiero obtener el valor máximo de un campo (orden) de
una tabla y luego utilizar ese valor en el procedimiento. Al ejecutar
el procedimiento me da el siguiente error: "variable @ordenOUT must be
declared". Yo creo que ya está declarada en el execute sp_executesql.
Aún así he probado a declararla también arriba y sigue dando el
mismo error. Lo más curioso es que me imprime el valor de @orden
correctamente, pero me da el error y no me ejecuta el resto del
procedimiento. ¿Alquién sabe qué estoy haciendo mal?

declare @orden varchar(10)
set @strGetOrden=N'select @ordenOUT=max(orden) from '+ @tabla
execute sp_executesql @strGetOrden,N'@ordenOUT nvarchar(10)
output',@ordenOUT=@orden output

print @orden

if @orden is null
set @orden=1
else
set @orden=@orden + 1


Gracias de antemano.

Un saludo.


Respuesta Responder a este mensaje
#2 Merichel
19/06/2006 - 17:15 | Informe spam
Ya había probado eso y lo he vuelto a probar y sigue dando el mismo
error.
No sé cuál puede ser el problema.

Alejandro Mesa ha escrito:

Merichel,

Cual es el tipo de dato de la columna [orden]?

Si estas sumandole 1 al valor de salida, entonces me have pensar que ese
valor es entero. Pudieras probar declarando las variables @orden y @ordenOUT
como int?

Ejemplo:

use northwind
go

declare @orden int
declare @tabla sysname
declare @strGetOrden nvarchar(4000)

set @tabla = N'[dbo].[orders]'
set @strGetOrden=N'select @ordenOUT=max(orderid) from '+ @tabla

execute sp_executesql @strGetOrden,N'@ordenOUT int output', @ordenOUT > @orden output

print @orden

if @orden is null
set @orden=1
else
set @orden = @orden + 1
go


AMB


"Merichel" wrote:

> Hola a todos !
>
> Estoy intentando hacer esta consulta en sql dinámico dentro de un
> procedimiento. Quiero obtener el valor máximo de un campo (orden) de
> una tabla y luego utilizar ese valor en el procedimiento. Al ejecutar
> el procedimiento me da el siguiente error: "variable @ordenOUT must be
> declared". Yo creo que ya está declarada en el execute sp_executesql.
> Aún así he probado a declararla también arriba y sigue dando el
> mismo error. Lo más curioso es que me imprime el valor de @orden
> correctamente, pero me da el error y no me ejecuta el resto del
> procedimiento. ¿Alquién sabe qué estoy haciendo mal?
>
> declare @orden varchar(10)
> set @strGetOrden=N'select @ordenOUT=max(orden) from '+ @tabla
> execute sp_executesql @strGetOrden,N'@ordenOUT nvarchar(10)
> output',@ordenOUT=@orden output
>
> print @orden
>
> if @orden is null
> set @orden=1
> else
> set @orden=@orden + 1
>
>
> Gracias de antemano.
>
> Un saludo.
>
>
Respuesta Responder a este mensaje
#3 Ele
19/06/2006 - 23:26 | Informe spam
al ejecutar el procedimiento me da el siguiente error: "variable @ordenOUT
must be declared".



Donde declaras esta variable? [@ordenOUT ]

"Merichel" escribió en el mensaje
news:
Hola a todos !

Estoy intentando hacer esta consulta en sql dinámico dentro de un
procedimiento. Quiero obtener el valor máximo de un campo (orden) de
una tabla y luego utilizar ese valor en el procedimiento. Al ejecutar
el procedimiento me da el siguiente error: "variable @ordenOUT must be
declared". Yo creo que ya está declarada en el execute sp_executesql.
Aún así he probado a declararla también arriba y sigue dando el
mismo error. Lo más curioso es que me imprime el valor de @orden
correctamente, pero me da el error y no me ejecuta el resto del
procedimiento. ¿Alquién sabe qué estoy haciendo mal?

declare @orden varchar(10)
set @strGetOrden=N'select @ordenOUT=max(orden) from '+ @tabla
execute sp_executesql @strGetOrden,N'@ordenOUT nvarchar(10)
output',@ordenOUT=@orden output

print @orden

if @orden is null
set @orden=1
else
set @orden=@orden + 1


Gracias de antemano.

Un saludo.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida