Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Duda de consulta en sql server

Estas en el tema de Duda de consulta en sql server en el foro de SQL Server en Foros del Web. si alguien me podria ayudar... ¿Por que no se puede executar lo siguiente? DECLARE @consulta VARCHAR(50) SET @consulta = 'SELECT 1' IF (EXEC (@consulta)) = ...
  #1 (permalink)  
Antiguo 06/08/2010, 12:10
Avatar de DarkWatch  
Fecha de Ingreso: marzo-2010
Ubicación: Mexico
Mensajes: 177
Antigüedad: 14 años, 1 mes
Puntos: 2
Duda de consulta en sql server

si alguien me podria ayudar...

¿Por que no se puede executar lo siguiente?

DECLARE
@consulta VARCHAR(50)
SET @consulta = 'SELECT 1'

IF (EXEC (@consulta)) = 1
BEGIN
PRINT 'se executo'
END

que viene siendo
IF(EXEC ('SELECT 1')) = 1
BEGIN
PRINT 'se executo'
END

todos veremos que la sintaxis esta correcta pero el IF(EXEC()) por alguna razon no se executa correctamente ¿alguien sabe por que el sql trae este problema?

Nota: es simplemente un ejemplo del problema que tengo al momento de hacer un sp dinamico en donde interactuan 3 bases de datos distintas, por eso esque necesito hacer un if(exec(@consulta)) ya que la consulta concatena @BDDESTINO
__________________
Todos Somos Ignorantes Lo que Ocurre es que no Todos Ignoramos las Mismas Cosas
  #2 (permalink)  
Antiguo 06/08/2010, 12:21
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Duda de consulta en sql server

El valor que quieres evaluar en el IF tienes que asignarlo antes a una variable, ya que EXECUTE no es una funcion que devuelva algun valor, pero puedes hacer que tu SP devuelva el valor en algun parametro, o puedes usar INSERT INTO temp EXEC proc.
Suerte!
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #3 (permalink)  
Antiguo 06/08/2010, 12:27
Avatar de DarkWatch  
Fecha de Ingreso: marzo-2010
Ubicación: Mexico
Mensajes: 177
Antigüedad: 14 años, 1 mes
Puntos: 2
Respuesta: Duda de consulta en sql server

Gracias por tu respuesta...

entiendo que esto se puede executar de otras maneras, creando tablas de variables @tabla o creando otros procedimientos, pero eso es lo que me quisiera evitar, ya que se necesita interactuar entre 5 tablas con base de datos diferentes identificando si existe el mismo registro en ambas bases de datos...

y quisiera evitar el crear 5 tablas temporales en el proceso, solo por manejo... no por capricho :) pero si me disen que no se puede executar de otra manera ese if(exec()) no me quedara de otra

Saludos y gracias....
__________________
Todos Somos Ignorantes Lo que Ocurre es que no Todos Ignoramos las Mismas Cosas
  #4 (permalink)  
Antiguo 06/08/2010, 14:13
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 16 años, 6 meses
Puntos: 85
Respuesta: Duda de consulta en sql server

No es que exista una sola forma de gestionar sql dinámico, pero una de las cosas buenas del sp_executesql es que ya tiene contemplada la necesidad de pasar parámetros de entrada y salida.

Código:
DECLARE @sql_stmt NVARCHAR(500)
DECLARE @param INT

SET @sql_stmt = N'SELECT @paramOUT = COUNT(*) FROM sys.sysobjects'
EXEC sp_executesql @sql_stmt, N'@ParamOUT INT OUTPUT', @paramOUT=@param OUTPUT

IF (@param > 0)
SELECT 'Cantidad:' + cast(@param as varchar(10))
Saludos
  #5 (permalink)  
Antiguo 06/08/2010, 14:58
Avatar de DarkWatch  
Fecha de Ingreso: marzo-2010
Ubicación: Mexico
Mensajes: 177
Antigüedad: 14 años, 1 mes
Puntos: 2
De acuerdo Respuesta: Duda de consulta en sql server

Excelente muchas Gracias por la colaboración... Gran Respuesta MATANGA
__________________
Todos Somos Ignorantes Lo que Ocurre es que no Todos Ignoramos las Mismas Cosas

Etiquetas: server, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:52.