insert a una tabla desde un store procedure

09/03/2007 - 00:11 por jmeyep | Informe spam
Hola, veran deseo hacer un insert a una tabla desde el resultado de un
Store Procedure cuyo resultado tiene la misma estructura que la de la
mi tabla. Para darles mas detalles aqui les dejo el codigo:

-
CREATE PROCEDURE dbo.P_SEL_CALIF_SBS
@c_tipo_doc_id char(1),
@c_codigo_doc_id char(12),
@c_nombre_deu varchar(120) OUTPUT,
@dc_calif0 decimal(5,2) OUTPUT,
@dc_calif1 decimal(5,2) OUTPUT,
@dc_calif2 decimal(5,2) OUTPUT,
@dc_calif3 decimal(5,2) OUTPUT,
@dc_calif4 decimal(5,2) OUTPUT
AS
BEGIN
exec BMESRVD1.BD_Negocios.dbo.P_SEL_CALIF_SBS @c_tipo_doc_id,
@c_codigo_doc_id,
@c_nombre_deu,
@dc_calif0,
@dc_calif1,
@dc_calif2,
@dc_calif3,
@dc_calif4
END

-

CREATE PROCEDURE dbo.P_INSERT_CALIF_SBS
@dni char(8)
AS
declare
@c_nombre_deu varchar(120),
@dc_calif0 decimal(5,2),
@dc_calif1 decimal(5,2),
@dc_calif2 decimal(5,2),
@dc_calif3 decimal(5,2),
@dc_calif4 decimal(5,2)

EXEC P_SEL_CALIF_SBS '1', @dni, @c_nombre_deu, @dc_calif0, @dc_calif1,
@dc_calif2, @dc_calif3, @dc_calif4

-

Como podran ver tengo 2 procedure P_SEL_CALIF_SBS (Procedure Original)
y P_INSERT_CALIF_SBS (Creado para ejecutarlo usando 1 parámetro y sin
declarar previamente variables) de tal manera que puedo tener mis
resultados ejecutandolo en 1 sola linea

EXEC P_INSERT_CALIF_SBS '10378325'

Resultado:

NOMBRE CALIF0 CALIF1
CALIF2 CALIF3 CALIF4
OTIURA TRISANO SOLANGE 100.00 .00 .00 .00 .00

Ahora lo que deseo es tomar el registro e insertarlo en mi tabla
PS_MBO_SBS_TBL

Gracias de antemano

Preguntas similare

Leer las respuestas

#1 Maxi
09/03/2007 - 01:02 | Informe spam
Hola, debes hacer

INSERT TABLA
EXEC STORE


Saludos

[Microsoft MVP SQL Server]
SQLTOTALConsulting - Servicios y consultoria de SQLServer
www.sqlgurus.org
Buenos Aires - Argentina
http://msmvps.com/blogs/maxiaccotto/
wrote in message
news:
Hola, veran deseo hacer un insert a una tabla desde el resultado de un
Store Procedure cuyo resultado tiene la misma estructura que la de la
mi tabla. Para darles mas detalles aqui les dejo el codigo:

-
CREATE PROCEDURE dbo.P_SEL_CALIF_SBS
@c_tipo_doc_id char(1),
@c_codigo_doc_id char(12),
@c_nombre_deu varchar(120) OUTPUT,
@dc_calif0 decimal(5,2) OUTPUT,
@dc_calif1 decimal(5,2) OUTPUT,
@dc_calif2 decimal(5,2) OUTPUT,
@dc_calif3 decimal(5,2) OUTPUT,
@dc_calif4 decimal(5,2) OUTPUT
AS
BEGIN
exec BMESRVD1.BD_Negocios.dbo.P_SEL_CALIF_SBS @c_tipo_doc_id,
@c_codigo_doc_id,
@c_nombre_deu,
@dc_calif0,
@dc_calif1,
@dc_calif2,
@dc_calif3,
@dc_calif4
END

-

CREATE PROCEDURE dbo.P_INSERT_CALIF_SBS
@dni char(8)
AS
declare
@c_nombre_deu varchar(120),
@dc_calif0 decimal(5,2),
@dc_calif1 decimal(5,2),
@dc_calif2 decimal(5,2),
@dc_calif3 decimal(5,2),
@dc_calif4 decimal(5,2)

EXEC P_SEL_CALIF_SBS '1', @dni, @c_nombre_deu, @dc_calif0, @dc_calif1,
@dc_calif2, @dc_calif3, @dc_calif4

-

Como podran ver tengo 2 procedure P_SEL_CALIF_SBS (Procedure Original)
y P_INSERT_CALIF_SBS (Creado para ejecutarlo usando 1 parámetro y sin
declarar previamente variables) de tal manera que puedo tener mis
resultados ejecutandolo en 1 sola linea

EXEC P_INSERT_CALIF_SBS '10378325'

Resultado:

NOMBRE CALIF0 CALIF1
CALIF2 CALIF3 CALIF4
OTIURA TRISANO SOLANGE 100.00 .00 .00 .00 .00

Ahora lo que deseo es tomar el registro e insertarlo en mi tabla
PS_MBO_SBS_TBL

Gracias de antemano
Respuesta Responder a este mensaje
#2 jmeyep
09/03/2007 - 16:08 | Informe spam
Gracias por la respuesta pero ya he probado haciendo un insert a la
tabla pero no funciona. Es mas aqui les muestro el error que aparece:

Server: Msg 7391, Level 16, State 1, Procedure P_SEL_CALIF_SBS, Line
12
The operation could not be performed because the OLE DB provider
'SQLOLEDB' was unable to begin a distributed transaction.
[OLE/DB provider returned message: New transaction cannot enlist in
the specified transaction coordinator. ]
OLE DB error trace [OLE/DB Provider 'SQLOLEDB'
ITransactionJoin::JoinTransaction returned 0x8004d00a].


Saludos
Respuesta Responder a este mensaje
#3 Maxi
09/03/2007 - 23:23 | Informe spam
ahh pero el problema es otro, aca seguramente ese SP debe estar en otro
servidor o bien debe hacer alguna busqueda, fijate que el mensaje indica que
no tenes habilitado el manejador de transacciones distribuidas, en cada
servidor habilitalo desde los servicios


Saludos

[Microsoft MVP SQL Server]
SQLTOTALConsulting - Servicios y consultoria de SQLServer
www.sqlgurus.org
Buenos Aires - Argentina
http://msmvps.com/blogs/maxiaccotto/
wrote in message
news:
Gracias por la respuesta pero ya he probado haciendo un insert a la
tabla pero no funciona. Es mas aqui les muestro el error que aparece:

Server: Msg 7391, Level 16, State 1, Procedure P_SEL_CALIF_SBS, Line
12
The operation could not be performed because the OLE DB provider
'SQLOLEDB' was unable to begin a distributed transaction.
[OLE/DB provider returned message: New transaction cannot enlist in
the specified transaction coordinator. ]
OLE DB error trace [OLE/DB Provider 'SQLOLEDB'
ITransactionJoin::JoinTransaction returned 0x8004d00a].


Saludos

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