Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-08-2005
Avatar de hector.roma
hector.roma hector.roma is offline
Miembro
 
Registrado: jul 2005
Ubicación: a caballo entre Galicia y Portugal
Posts: 58
Poder: 19
hector.roma Va por buen camino
cómo recuperar valores de SP's dinámicas

Buen día, espero que durante el fin de semana hayan cargado bien las baterías...

Necesito saber como puedo hacer para recuperar parametros desde una Stored Procedure, que creo que tengo que llamar de forma dinámica...

Con el siguiente ejemplo se recupera el Nombre del cliente 5....

Código SQL [-]
DECLARE @miVar VARCHAR(30)
SET @miVar = (SELECT Nombre FROM Clientes WHERE Codigo = 5)

Pero que ocurre cuando quiero recuperar el Nombre de un determinado Cliente, Empleado, Proveedor, ...
Tendría que hacer algo del estilo (por ejemplo para recuperar el cliente, o el proveedor, o ... base):
#1
Código SQL [-]
DECLARE @miVar VARCHAR(30)
DECLARE @miTabla VARCHAR(30)
SET @miVar = (SELECT Nombre FROM @miTabla WHERE Codigo = 0)
-- General SQL Error. Must Declare the variable '@miTabla'

Entonces, tengo que recurrir a SQL Dinámico... pero me enfrento al problema de recuperar el valor del resultado.

#2 O bien lo hago así, y me parece una chapuza...
Código SQL [-]
DECLARE @miVar VARCHAR(100)
DECLARE @stmt VARCHAR(1000)
DECLARE @miTabla VARCHAR(100)
 
SET @miTabla = 'Clientes'
SET @stmt =         'DECLARE @mv VARCHAR (100) '
SET @stmt = @stmt + 'SET @mv = ( '
SET @stmt = @stmt +             'SELECT Nome  '
SET @stmt = @stmt +             'FROM ' + @miTabla + ' '
SET @stmt = @stmt +             'WHERE CodTerc = 0 '
SET @stmt = @stmt +           ') '
SET @stmt = @stmt + 'INSERT INTO __Contenedor (Campo) '
SET @stmt = @stmt +      'VALUES (@mv)'

EXEC (@stmt)
 
SET @miVar = (SELECT Campo FROM __Contenedor) --Lo consegui

O bien, con la ayuda de todos, pensamos en otra solución. Lo estuve intentando hacer con sp_executesql, pero no he logrado recuperar nada que no fuera el result status (muy útil).

Un saludo y a ver que podemos lograr hacer.
Responder Con Cita
  #2  
Antiguo 01-08-2005
Avatar de edgusano
edgusano edgusano is offline
Miembro
 
Registrado: abr 2004
Ubicación: Medellin Colombia
Posts: 180
Poder: 21
edgusano Va por buen camino
Hola Hector.

Con el sp_executesql lo puedes obtener especificando en el nombre del parametro que deseas obtener el resultado la palabra clave OUTPUT, esto debe ser en ambas partes del llamado del sp_executesql, es decir en la lista de parametros y la lista correspondiente a reemplazar en la anterior.
Ah y sabes yo haria esto:

Código SQL [-]
 DECLARE @miVar VARCHAR(30)
 SELECT @miVar = Nombre FROM Clientes WHERE Codigo = 5

en vez de la forma que utilizas.
__________________
Optimus Prime
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 21:26:35.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi