Uso de procedimiento almacenado dentro de un INSERT.

24/10/2006 - 17:03 por José Luis | Informe spam
Hola a todos,

estoy tratando de utilizar un procedimiento almacenado para rellenar el
valor de un campo en un insert, pero no se si esto se puede hacer ya que no
he encontrado la manera que funcione.

Alguién me puede echar una mano y decirme si se puede llamar a un
procedimiento almacenado desde un insert y si se puede como hacerlo?

Muchas gracias.

Un saludo,
José Luis.

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
24/10/2006 - 17:51 | Informe spam
José Luis,

Me inmagino que hablas respecto a utilizar la salida de un procedimineto
almacenado como la fuente de una columna en especifico, algo asi como:

insert into dbo.t1(c1, c2)
select c1, usp_p1(c1)
from dbo.t2

Si ese es el caso, entonces la respuesta es no. Si acaso te refieres a como
insertar la salida de un procedimineto en una tabla, entonces puedes usar:

insert into dbo.t1(c1, c2)
exec dbo.usp_p1 ...

Si los casos mencionados no tienen nada que ver con el tuyo, entonces te
pido que seas mas explicito y postees un ejemplo de lo que deseas hacer.

Saludos,

AMB
AMB


"José Luis" wrote:

Hola a todos,

estoy tratando de utilizar un procedimiento almacenado para rellenar el
valor de un campo en un insert, pero no se si esto se puede hacer ya que no
he encontrado la manera que funcione.

Alguién me puede echar una mano y decirme si se puede llamar a un
procedimiento almacenado desde un insert y si se puede como hacerlo?

Muchas gracias.

Un saludo,
José Luis.




Respuesta Responder a este mensaje
#2 A.Afonso
24/10/2006 - 18:46 | Informe spam
Hola José Luis,

Me da la impresión de que lo que necesitas no es un procedimiento almacenado
sino una función definida por el usuario.

Un saludo,

A.Afonso


" José Luis" <JLB> escribió en el mensaje
news:%
Hola a todos,

estoy tratando de utilizar un procedimiento almacenado para rellenar el
valor de un campo en un insert, pero no se si esto se puede hacer ya que
no he encontrado la manera que funcione.

Alguién me puede echar una mano y decirme si se puede llamar a un
procedimiento almacenado desde un insert y si se puede como hacerlo?

Muchas gracias.

Un saludo,
José Luis.


Respuesta Responder a este mensaje
#3 José Luis
25/10/2006 - 12:05 | Informe spam
Hola Alejandro y Afonso:

antes de nada muchas gracias por responder y perdón por no exponer
claramente mi problema. Intentaré que con un ejemplo quede mejor. Yo tengo
un procedimiento almacenado, "newid", que me devuelve una cadena que es el
identificador que voy a meter en el registro. Esto desde Visual Fox Pro
ningún problema mientras estoy creando la cadena de inserción llamo a este
procedimiento me devuelve el valor y arreglado.

El problema es si quisiera hacer un INSERT desde el administrador de SQL
Server, no se como podría rellenar el campo que debe utilizar el
Procedimiento almacenado, es decir yo quiero hacer un INSERT INTO
articulo(id_articulo, nombre_articulo)

El id_articulo debe estar rellenado por el valor que devuelve el
procedimiento almacenado, esto se puede hacer?

Por otra parte a lo mejor yo estoy equivocado y como dice Afonso quizás
debería utilizar una función en lugar de un procedimiento almacenado... soy
nuevo en esto y quizás estoy tomando el camino equivocado. Si fuera así por
favor me podríais decir porque? Para no cometer otra vez el mismo error.

Muchas gracias por vuestra ayuda.

Un saludo,
José Luis.
"A.Afonso" escribió en el mensaje
news:
Hola José Luis,

Me da la impresión de que lo que necesitas no es un procedimiento
almacenado sino una función definida por el usuario.

Un saludo,

A.Afonso


" José Luis" <JLB> escribió en el mensaje
news:%
Hola a todos,

estoy tratando de utilizar un procedimiento almacenado para rellenar el
valor de un campo en un insert, pero no se si esto se puede hacer ya que
no he encontrado la manera que funcione.

Alguién me puede echar una mano y decirme si se puede llamar a un
procedimiento almacenado desde un insert y si se puede como hacerlo?

Muchas gracias.

Un saludo,
José Luis.







Respuesta Responder a este mensaje
#4 A.Afonso
25/10/2006 - 16:57 | Informe spam
Hola de nuevo José Luis, no sé exactamente que valor quieres insertar como
id_articulo, pero en cualqiuer caso, lo que sí puedes hacer es algo así como
lo siguiente:

INSERT INTO ARTICULO (IdArticulo, NombreArticulo)
VALUES (dbo.fnGetIdArticulo(parametro), dbo.fnGetNombreArticulo(parametro)))

dbo.fnGetIdArticulo(parametro) y dbo.fnGetNombreArticulo(parametro) son
funciones que devuelven valores en función de un parámetro. Echale un
vistazo a las funciones definidas por usuario.

No puedes utilizar procedimientos almacenados para hacer esto porque no
devuelven valores. Lo que sí puedes hacer es crear un procedimiento
almacenado que lo haga todo. Utilizando Transact-SQL.

Un saludo,

A.Afonso


" José Luis" <JLB> escribió en el mensaje
news:OIPXC2B%
Hola Alejandro y Afonso:

antes de nada muchas gracias por responder y perdón por no exponer
claramente mi problema. Intentaré que con un ejemplo quede mejor. Yo tengo
un procedimiento almacenado, "newid", que me devuelve una cadena que es el
identificador que voy a meter en el registro. Esto desde Visual Fox Pro
ningún problema mientras estoy creando la cadena de inserción llamo a este
procedimiento me devuelve el valor y arreglado.

El problema es si quisiera hacer un INSERT desde el administrador de SQL
Server, no se como podría rellenar el campo que debe utilizar el
Procedimiento almacenado, es decir yo quiero hacer un INSERT INTO
articulo(id_articulo, nombre_articulo)

El id_articulo debe estar rellenado por el valor que devuelve el
procedimiento almacenado, esto se puede hacer?

Por otra parte a lo mejor yo estoy equivocado y como dice Afonso quizás
debería utilizar una función en lugar de un procedimiento almacenado...
soy nuevo en esto y quizás estoy tomando el camino equivocado. Si fuera
así por favor me podríais decir porque? Para no cometer otra vez el mismo
error.

Muchas gracias por vuestra ayuda.

Un saludo,
José Luis.
"A.Afonso" escribió en el mensaje
news:
Hola José Luis,

Me da la impresión de que lo que necesitas no es un procedimiento
almacenado sino una función definida por el usuario.

Un saludo,

A.Afonso


" José Luis" <JLB> escribió en el mensaje
news:%
Hola a todos,

estoy tratando de utilizar un procedimiento almacenado para rellenar el
valor de un campo en un insert, pero no se si esto se puede hacer ya que
no he encontrado la manera que funcione.

Alguién me puede echar una mano y decirme si se puede llamar a un
procedimiento almacenado desde un insert y si se puede como hacerlo?

Muchas gracias.

Un saludo,
José Luis.












Respuesta Responder a este mensaje
#5 José Luis
26/10/2006 - 12:10 | Informe spam
Muchas gracias Afonso,

le echaré un vistazo al tema de las funciones. Por lo menos ya veo el camino
a seguir.

Un saludo,
José Luis.


"A.Afonso" escribió en el mensaje
news:OfLtKVE%
Hola de nuevo José Luis, no sé exactamente que valor quieres insertar como
id_articulo, pero en cualqiuer caso, lo que sí puedes hacer es algo así
como lo siguiente:

INSERT INTO ARTICULO (IdArticulo, NombreArticulo)
VALUES (dbo.fnGetIdArticulo(parametro),
dbo.fnGetNombreArticulo(parametro)))

dbo.fnGetIdArticulo(parametro) y dbo.fnGetNombreArticulo(parametro) son
funciones que devuelven valores en función de un parámetro. Echale un
vistazo a las funciones definidas por usuario.

No puedes utilizar procedimientos almacenados para hacer esto porque no
devuelven valores. Lo que sí puedes hacer es crear un procedimiento
almacenado que lo haga todo. Utilizando Transact-SQL.

Un saludo,

A.Afonso


" José Luis" <JLB> escribió en el mensaje
news:OIPXC2B%
Hola Alejandro y Afonso:

antes de nada muchas gracias por responder y perdón por no exponer
claramente mi problema. Intentaré que con un ejemplo quede mejor. Yo
tengo un procedimiento almacenado, "newid", que me devuelve una cadena
que es el identificador que voy a meter en el registro. Esto desde
Visual Fox Pro ningún problema mientras estoy creando la cadena de
inserción llamo a este procedimiento me devuelve el valor y arreglado.

El problema es si quisiera hacer un INSERT desde el administrador de SQL
Server, no se como podría rellenar el campo que debe utilizar el
Procedimiento almacenado, es decir yo quiero hacer un INSERT INTO
articulo(id_articulo, nombre_articulo)

El id_articulo debe estar rellenado por el valor que devuelve el
procedimiento almacenado, esto se puede hacer?

Por otra parte a lo mejor yo estoy equivocado y como dice Afonso quizás
debería utilizar una función en lugar de un procedimiento almacenado...
soy nuevo en esto y quizás estoy tomando el camino equivocado. Si fuera
así por favor me podríais decir porque? Para no cometer otra vez el mismo
error.

Muchas gracias por vuestra ayuda.

Un saludo,
José Luis.
"A.Afonso" escribió en el mensaje
news:
Hola José Luis,

Me da la impresión de que lo que necesitas no es un procedimiento
almacenado sino una función definida por el usuario.

Un saludo,

A.Afonso


" José Luis" <JLB> escribió en el mensaje
news:%
Hola a todos,

estoy tratando de utilizar un procedimiento almacenado para rellenar el
valor de un campo en un insert, pero no se si esto se puede hacer ya
que no he encontrado la manera que funcione.

Alguién me puede echar una mano y decirme si se puede llamar a un
procedimiento almacenado desde un insert y si se puede como hacerlo?

Muchas gracias.

Un saludo,
José Luis.

















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