![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Procedimiento almacenado pasando como parametro el nombre de la base
Hola, estoy intentando realizar la suma de varios campos con procedimientos almacenados en sql server 2008. El inconveniente radica en que no hayo la forma de hacerlo al pasarle a dicho procedimiento como parametro la base sobre la cual tiene que realizar las suma. Les paso lo realizado:
ALTER PROCEDURE [dbo].[TOTALES] -- Add the parameters for the stored procedure here @TOTIVA21 NUMERIC(13,2) OUTPUT, @TOTIVA105 NUMERIC(13,2) OUTPUT, @SUBTsIVA NUMERIC(13,2) OUTPUT, @GANANCIAsIVA NUMERIC(13,2) OUTPUT, @GANANCIAcIVA NUMERIC(13,2) OUTPUT, @BASE NVARCHAR(9) AS BEGIN DECLARE @COMANDO NVARCHAR(240) SET NOCOUNT ON; SET @COMANDO='SELECT (@TOTIVA105)= SUM(SUBTIVA105) FROM ' + @BASE EXEC SP_EXECUTESQL @COMANDO SET @COMANDO= 'SELECT @TOTIVA21=SUM(SUBTIVA21) FROM ' + @BASE EXEC SP_EXECUTESQL @COMANDO SET @COMANDO= 'SELECT @SUBTsIVA=SUM(SUBTOTSIVA) FROM ' + @BASE EXEC SP_EXECUTESQL @COMANDO SET @COMANDO= 'SELECT @GANANCIAsIVA=SUM(GANASIVA) FROM ' + @BASE EXEC SP_EXECUTESQL @COMANDO SET @COMANDO= 'SELECT @GANANCIAcIVA=SUM(GANACIVA) FROM ' + @BASE EXEC SP_EXECUTESQL @COMANDO END Agradezco de antemano quien pueda ayudarme |
#2
|
||||
|
||||
Recuerda poner los tags al código fuente, ejemplo:
![]()
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#3
|
|||
|
|||
Quizas esto funcione, no lo he probado:
|
#4
|
|||
|
|||
Estimado orodriguezca, gracias por tu tiempo. Probe lo que me enviaste y obtengo al llamarlo desde delphi "el nombre de objeto #tempo1 no es valido'. Lo he modificado de varias maneras y simepre da ese error. Tomando tu ejemplo lo hice con variable de tabla
pero me da error cuando se ejecuta el @comando "debe declarar la varible de tabla @temp1". Es como si no reconociera las variables que estan dentro del @comando |
#5
|
||||
|
||||
Hola,
El problema es de alcance de las variables. Cuando se ejecutan en el XEC SP_EXECUTESQL, no existen en su ámbito ( ya que el SQL Server seguramente creará uno nuevo) . Creo que eso es lo que está ocurriendo. Prueba a hacer: SELECT @TOTIVA105= SUM(SUBTIVA105) FROM @BASE a ver si te deja el valor en la variable @TOTIVA105. No estoy seguro de que funcione. Otra cosa que me llama la atención es ( no estoy seguro) si las variables de entrada pueden ser cambiadas. Si no se pudiera, tendrás que definir otras. Un saludo
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
#6
|
|||
|
|||
Gracias fjcg02 por tu aporte para entender porque no tomaba la variable en el execute. Lo que me aconsejas fue lo primero que hice y funciona perfecto cuando pongo un nombre de tabla, entonces como necesito hacerlo para varias tablas, cambié el nombre de tabla por la variable "@BASE y me llevé la sorpresa que al guardar el procedimiento aparece "Debe declarar la variable de tabla "@BASE"", la cual está declarada. Por eso intenté con el execute, pero tampoco funciona.
|
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
pasar nombre de tabla como parametro a procedimiento almacenado | Matorral | MySQL | 0 | 17-12-2013 16:53:14 |
Crear Formulario pasando como parametro un string | Efren2006 | OOP | 2 | 15-05-2008 18:08:48 |
Parametro nulo en un procedimiento almacenado | Viky | SQL | 3 | 29-03-2007 22:45:22 |
Ejectutar Procedimiento Almacenado en otra Base de Datos | AGAG4 | Conexión con bases de datos | 2 | 20-09-2004 20:12:44 |
Crear Formulario pasando como parametro un string | morfeo21 | Varios | 1 | 18-08-2004 02:39:58 |
![]() |
|