Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Procedimientos Almacenados

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 23

Crear:

CREATE PROCEDURE <nombre>


(<Parametro><TipodeDato>,…n) 
AS
<Instruccion, operacion, etc.>
      
Modificar:
ALTER PROCEDURE <nombre>
(<Parametro><TipodeDato>,…n) 
AS
<Instruccion, operacion, etc.>

Borrar:
DROP PROCEDURE <nombre>

Ejemplos Prácticos.

Query para el siguiente ejemplo, tabla Personas.

CREATE TABLE Personas(


       PersId int PRIMARY KEY IDENTITY(1,1) NOT NULL,
       PersNombre nvarchar (80) NOT NULL,
       PersFecNacimiento datetime NULL,
       PersActivo bit NOT NULL
       )

Procedimiento almacenado para guardar o actualizar una Persona.

CREATE PROCEDURE agregarPersona


@Id INT,
@Nombre NVARCHAR(50),
@FecNac DATETIME,
@Activo bit
AS
IF NOT EXISTS (SELECT * FROM Personas WHERE PersId = @Id)
BEGIN
       INSERT INTO Personas
       VALUES (@Nombre,@FecNac,@Activo)
END
ELSE
BEGIN
       UPDATE Personas SET
       PersNombre = @Nombre,
       PersFecNacimiento = @FecNac,
       PersActivo = @Activo
       WHERE PersId = @Id

END
Como se puede apreciar en el ejemplo anterior, el procedimiento almacenado,
revisa si el Id existe en la tabla Personas, en caso de no existir, ingresa una nueva
Persona en la tabla y en caso de existir una persona con el Id, procede a actualizar
los datos de la tabla.

CREATE PROCEDURE eliminarPersona


@IdPersona INT
AS
IF EXISTS (SELECT * FROM Telefonos WHERE PersId = @IdPersona)
BEGIN
       DELETE FROM Telefonos WHERE PersId = @IdPersona
END

DELETE FROM Personas WHERE PersId = @IdPersona

En el ejemplo anterior, podemos ver que al eliminar una Persona y este tiene una
relación en otra tabla, lo primero que se realiza es eliminar los datos de la tabla
relacionada para terminar de eliminar la Persona y este Id no esté relacionado en
tablas secundarias.

Ejecutar un procedimiento almacenado dentro de SQL.

Los procedimientos almacenados al ser ejecutados pueden regresar un valor


único, un conjunto de resultados o no regresan ningún valor y solo se encargan de
procesar sus instrucciones.

Para la ejecutar un procedimiento almacenado debemos utilizar la sentencia EXEC.

Ejemplo sin regresar valor:


EXEC agregarPersona @Id = 1, @Nombre = 'Thom', @FecNac = '1997-06-16' @Activo = 1

EXEC eliminarPersona @IdPersona = 1

Ejemplo con retorno de resultados:

CREATE PROCEDURE ObtenerPersonas


AS
SELECT P.PersNombre,
       P.PersFecNacimiento,
       ISNULL(T.TeleNumero, 'S/T') Telefono
FROM Personas P

LEFT JOIN Telefonos T ON P.PersId = T.PersId


EXEC ObtenerPersonas

Resultado:

Estos procedimientos almacenados son utilizados cuando se requiere mostrar


informes al usuario, o generar reportes, con las instrucciones dentro de ellas
podemos hacer cálculos de las tablas y regresar el valor ya sea en un informe o en
la vista de nuestra aplicación.

create procedure Proc_Nombre

  @Nombre varchar(30)

 as

 Begin

  select Nombre, Apellido

   from Personas

   where Nombre= @Nombre;

   END

 GO
 Muchas Gracias leandro cierro la consulta ya esta resuelto el tema, al final lo
que hice separe todos los procedimientos en diferentes sp insert update y
delete. de esta forma:

 CREATE Procedure SFAC_Insertar


(
 @nFact int,
 @nombEmisor varchar(10),
 @codEmisor int,
 @codComercio int,
 @codCadena int
)
as
begin
 insert into RegistroFacturas ([nFact], [nombEmisor], [codEmisor],
[codComercio], [codCadena]) values (@nFact, @nombEmisor, @codEmisor,
@codComercio, @codCadena)
end
GO

CREATE procedure SFAC_EliminarDatos


(
 @nFact int,
 @codEmisor int,
 @nombEmisor varchar(10),
 @codComercio int,
 @codCadena int 
)
as
delete  from RegistroFacturas
 where @nFact = nFact
 and @codEmisor = codEmisor
 and @nombEmisor = nombEmisor
 and @codComercio = codComercio
 and @codCadena = codCadena

GO

CREATE procedure SFAC_GuardaRegistros


(
 @nFact integer,
 @codEmisor integer,
 @nombEmisor varchar(30)
)
as
begin
select nFact NumeroFactura, codEmisor CodigoEmisor, nombEmisor
NombreEmisor,codComercio CodigoComercio, nombComercio
NombreComercio  from RegistroFacturas
end
GO

CREATE procedure SFAC_ActualizarDatos


(
 @nFact int,
 @codEmisor int,
 @nombEmisor varchar(10),
 @codComercio int,
 @codCadena int 

as
update RegistroFacturas set @codEmisor = codEmisor, @nombEmisor =
nombEmisor, @codComercio = codComercio, @codCadena = codCadena
where @nFact = nFact
GO

o Marcado como respuesta Aprendis24 miércoles, 16 de junio de 2010 16:03


miércoles, 16 de junio de 2010 16:03
Responder
|
Citar

Aprendis24
Casa
370 Puntos
 

1
Inicie sesión para votar
hola

lo que debes hacer es determinar que oepracion debes lanzar en cada


momento, o se tendras por un lado tu entidfad con un id, si es un alta seguro
el id no existira en tu db, por lo tanto si consultas por este te dira que no esta
y alli lanzas el procedure de insert

si tienes un id y lo verificas, la db te dira que existe, por lo tanto lanzaras el


procedure de update, las otras oepraciones de select y delete ya son
manuales y lanzadas por una accion del usuario o proceso, o sea no necesitas
verificar previamente

te dejo unos link en donde realizo todas estas oepraciones solo que con
queries simples, sin stored procedure, lo unico que deberias adaptar es la
llamada al mismo que imagijno sabes como hacerlo

ADO.NET – Parte 3 – Actualizaci ó n Informaci ó n Sql Server


ADO.NET - Parte 1 - Recuperar Informaci  ó n Sql Server
[ADO.NET] – Parte 5 - Ejemplos Simples – Operaciones CRUD
analzia los ejemplso como estas programadas y estudia la tecnica solo debes
cambiar el query por el nombre del SP que has creado, eso es todo, las
operacines son asl mismas

saludos

Leandro Tuttini

Blog
Buenos Aires
Argentina

o Propuesto como respuesta Pablo RubioModerator lunes, 4 de diciembre de


2017 16:05
o Marcado como respuesta Pablo RubioModerator martes, 5 de diciembre de
2017 16:51
viernes, 11 de junio de 2010 0:45
Responder
|
Citar

Leandro Tuttini
Globant
(MCC, MVP)
909,000 Puntos
 

1
Inicie sesión para votar
Amigos miren busque mas info por internet y encontre una pagina super
buena donde explican lo que yo necesito, miren este el codigo que llevo hasta
el momento, son 3 procedimientos almacenados por separado, ahora me
gustaria por favor que me indiquen como los puedo juntar
----------------------------------------------------------
Actualizar Datos

CREATE procedure SFAC_ActualizarDatos


(
 @nFact int,
 @codEmisor int,
 @nombEmisor varchar(10),
 @codComercio int,
 @codCadena int 

as
update RegistroFacturas set @codEmisor = codEmisor, @nombEmisor =
nombEmisor, @codComercio = codComercio, @codCadena = codCadena
where @nFact = nFact
GO

---------------------------------------------------------
Eliminar Datos

CREATE procedure SFAC_EliminarDatos


(
 @nFact int,
 @codEmisor int,
 @nombEmisor varchar(10),
 @codComercio int,
 @codCadena int 
)
as
delete  from RegistroFacturas
 where @nFact = nFact
 and @codEmisor = codEmisor
 and @nombEmisor = nombEmisor
 and @codComercio = codComercio
 and @codCadena = codCadena

GO

---------------------------------------------------------
Inserta Datos

CREATE Procedure SFAC_InsertarDatos


(
 @nFact int,
 @codEmisor int,
 @nombEmisor varchar(10),
 @codComercio int,
 @codCadena int 
)

as
insert into RegistroFacturas ([nFact], [codEmisor], [nombEmisor],
[codComercio], [codCadena]) values (@nFact, @codEmisor, @nombEmisor,
@codComercio, @codCadena)
GO
---------------------------------------------------------

o Propuesto como respuesta Pablo RubioModerator lunes, 4 de diciembre de


2017 16:05
o Marcado como respuesta Pablo RubioModerator martes, 5 de diciembre de
2017 16:51
viernes, 11 de junio de 2010 22:02
Responder
|
Citar

Aprendis24
Casa
370 Puntos
 

1
Inicie sesión para votar
:-)
Hola de nuevo,

Benjamin, te lo vuelvo a preguntar: ¿Por que demonios intentas juntar 3 cosas


diferentes en una sola? ¿Acaso esperas obtener alguna ventaja que compense
todos los inconvenientes que esto va a generar?

Te estás pasando los principios básicos de un buena arquitectura por el forro...

Dale un vistazo a los principios de arquitectura SOLID:


http://en.wikipedia.org/wiki/Solid_(object-oriented_design)
El primero de ellos se basa en el principio de responsabilidad único (justo lo
contrario de lo que estas haciendo).

Saludos,

No olvides marcar la respuesta como correcta si te ha sido de utilidad


:-)
[MS-MVP-MCTS]
Mi Perfil MVP
en: https://mvp.support.microsoft.com/profile/L
luis
NUG: http://andorradotnet.com
Web: http://www.ordeeno.com
Blog: http://msmvps.com/blogs/lfranco
Geeks: http://geeks.ms/blogs/lfranco
o Marcado como respuesta Pablo RubioModerator martes, 5 de diciembre de
2017 16:51
lunes, 14 de junio de 2010 7:02
Responder
|
Citar

Lluis Franco
FIMARGE
8,310 Puntos
Moderador
 

1
Inicie sesión para votar
Muchas Gracias leandro cierro la consulta ya esta resuelto el tema, al final lo
que hice separe todos los procedimientos en diferentes sp insert update y
delete. de esta forma:

 CREATE Procedure SFAC_Insertar


(
 @nFact int,
 @nombEmisor varchar(10),
 @codEmisor int,
 @codComercio int,
 @codCadena int
)
as
begin
 insert into RegistroFacturas ([nFact], [nombEmisor], [codEmisor],
[codComercio], [codCadena]) values (@nFact, @nombEmisor, @codEmisor,
@codComercio, @codCadena)
end
GO

CREATE procedure SFAC_EliminarDatos


(
 @nFact int,
 @codEmisor int,
 @nombEmisor varchar(10),
 @codComercio int,
 @codCadena int 
)
as
delete  from RegistroFacturas
 where @nFact = nFact
 and @codEmisor = codEmisor
 and @nombEmisor = nombEmisor
 and @codComercio = codComercio
 and @codCadena = codCadena

GO

CREATE procedure SFAC_GuardaRegistros


(
 @nFact integer,
 @codEmisor integer,
 @nombEmisor varchar(30)
)
as
begin
select nFact NumeroFactura, codEmisor CodigoEmisor, nombEmisor
NombreEmisor,codComercio CodigoComercio, nombComercio
NombreComercio  from RegistroFacturas
end
GO

CREATE procedure SFAC_ActualizarDatos


(
 @nFact int,
 @codEmisor int,
 @nombEmisor varchar(10),
 @codComercio int,
 @codCadena int 

as
update RegistroFacturas set @codEmisor = codEmisor, @nombEmisor =
nombEmisor, @codComercio = codComercio, @codCadena = codCadena
where @nFact = nFact
GO

Disculpa como se podría hacer un procedimiento almacenado usando BIT? por


ejemplo para guardar un usuario e indicar si es administrador o usuario o es lo
mismo?
De antemano gracias...

o Marcado como respuesta Pablo RubioModerator martes, 5 de diciembre de


2017 16:51
domingo, 3 de diciembre de 2017 2:15
Responder
|
Citar

KaLuKaLuSoft
15 Puntos

Todas las respuestas


1
Inicie sesión para votar
hola

lo que debes hacer es determinar que oepracion debes lanzar en cada


momento, o se tendras por un lado tu entidfad con un id, si es un alta seguro
el id no existira en tu db, por lo tanto si consultas por este te dira que no esta
y alli lanzas el procedure de insert

si tienes un id y lo verificas, la db te dira que existe, por lo tanto lanzaras el


procedure de update, las otras oepraciones de select y delete ya son
manuales y lanzadas por una accion del usuario o proceso, o sea no necesitas
verificar previamente

te dejo unos link en donde realizo todas estas oepraciones solo que con
queries simples, sin stored procedure, lo unico que deberias adaptar es la
llamada al mismo que imagijno sabes como hacerlo

ADO.NET – Parte 3 – Actualizaci ó n Informaci ó n Sql Server


ADO.NET - Parte 1 - Recuperar Informaci  ó n Sql Server
[ADO.NET] – Parte 5 - Ejemplos Simples – Operaciones CRUD
analzia los ejemplso como estas programadas y estudia la tecnica solo debes
cambiar el query por el nombre del SP que has creado, eso es todo, las
operacines son asl mismas

saludos

Leandro Tuttini

Blog
Buenos Aires
Argentina

o Propuesto como respuesta Pablo RubioModerator lunes, 4 de diciembre de


2017 16:05
o Marcado como respuesta Pablo RubioModerator martes, 5 de diciembre de
2017 16:51
viernes, 11 de junio de 2010 0:45
Responder
|
Citar

Leandro Tuttini
Globant
(MCC, MVP)
909,000 Puntos
 

2
Inicie sesión para votar
:-)
Hola,

Sin duda puedes hacerlo, pero las buenas normas de diseño recomiendan
utilizar distintos SP para cada una de las opciones. De hecho es más claro ver
un código que ejecuta un SP 'insertarProducto' o 'actualizarProducto' que
siempre el mismo SP con parámetros distintos.

Particularmente te recomendaría utilizar 3 SP para la actualización y una


función de tipo tabla para el SELECT.

Saludos,

No olvides marcar la respuesta como correcta si te ha sido de utilidad


:-)

[MS-MVP-MCTS]
Mi Perfil MVP
en: https://mvp.support.microsoft.com/profile/L
luis
NUG: http://andorradotnet.com
Web: http://www.ordeeno.com
Blog: http://msmvps.com/blogs/lfranco
Geeks: http://geeks.ms/blogs/lfranco
o Marcado como respuesta Pablo RubioModerator martes, 5 de diciembre de
2017 16:51
viernes, 11 de junio de 2010 10:07
Responder
|
Citar

Lluis Franco
FIMARGE
8,310 Puntos
Moderador
 

1
Inicie sesión para votar
Amigos miren busque mas info por internet y encontre una pagina super
buena donde explican lo que yo necesito, miren este el codigo que llevo hasta
el momento, son 3 procedimientos almacenados por separado, ahora me
gustaria por favor que me indiquen como los puedo juntar

----------------------------------------------------------
Actualizar Datos

CREATE procedure SFAC_ActualizarDatos


(
 @nFact int,
 @codEmisor int,
 @nombEmisor varchar(10),
 @codComercio int,
 @codCadena int 

as
update RegistroFacturas set @codEmisor = codEmisor, @nombEmisor =
nombEmisor, @codComercio = codComercio, @codCadena = codCadena
where @nFact = nFact
GO

---------------------------------------------------------
Eliminar Datos

CREATE procedure SFAC_EliminarDatos


(
 @nFact int,
 @codEmisor int,
 @nombEmisor varchar(10),
 @codComercio int,
 @codCadena int 
)
as
delete  from RegistroFacturas
 where @nFact = nFact
 and @codEmisor = codEmisor
 and @nombEmisor = nombEmisor
 and @codComercio = codComercio
 and @codCadena = codCadena

GO

---------------------------------------------------------
Inserta Datos

CREATE Procedure SFAC_InsertarDatos


(
 @nFact int,
 @codEmisor int,
 @nombEmisor varchar(10),
 @codComercio int,
 @codCadena int 
)

as
insert into RegistroFacturas ([nFact], [codEmisor], [nombEmisor],
[codComercio], [codCadena]) values (@nFact, @codEmisor, @nombEmisor,
@codComercio, @codCadena)
GO
---------------------------------------------------------

o Propuesto como respuesta Pablo RubioModerator lunes, 4 de diciembre de


2017 16:05
o Marcado como respuesta Pablo RubioModerator martes, 5 de diciembre de
2017 16:51
viernes, 11 de junio de 2010 22:02
Responder
|
Citar

Aprendis24
Casa
370 Puntos
 

0
Inicie sesión para votar
Yo creo que seria una cosa asi, indiquenme si me equivoco por favor
Create Procedure SFAC_InsertarEliminarModificar
(
 @nFact int,
 @codEmisor int,
 @nombEmisor varchar(10),
 @codComercio int,
 @codCadena int
)
begin
if (select * from RegistroFacturas where nFact = @nFact)
begin
 insert into RegistroFacturas ([nFact], [codEmisor], [nombEmisor],
 [codComercio], [codCadena]) values (@nFact, @codEmisor, @nombEmisor,
 @codComercio, @codCadena)
end
else
 delete  from RegistroFacturas where @nFact = nFact
 and @codEmisor = codEmisor
 and @nombEmisor = nombEmisor
 and @codComercio = codComercio
 and @codCadena = codCadena
end if
 insert into RegistroFacturas ([nFact], [codEmisor],
[nombEmisor], [codComercio], [codCadena]) values (@nFact, @codEmisor,
@nombEmisor, @codComercio, @codCadena)
end

viernes, 11 de junio de 2010 22:35


Responder
|
Citar

Aprendis24
Casa
370 Puntos
 

1
Inicie sesión para votar
:-)
Hola de nuevo,

Benjamin, te lo vuelvo a preguntar: ¿Por que demonios intentas juntar 3 cosas


diferentes en una sola? ¿Acaso esperas obtener alguna ventaja que compense
todos los inconvenientes que esto va a generar?
Te estás pasando los principios básicos de un buena arquitectura por el forro...

Dale un vistazo a los principios de arquitectura SOLID:


http://en.wikipedia.org/wiki/Solid_(object-oriented_design)
El primero de ellos se basa en el principio de responsabilidad único (justo lo
contrario de lo que estas haciendo).

Saludos,

No olvides marcar la respuesta como correcta si te ha sido de utilidad


:-)

[MS-MVP-MCTS]
Mi Perfil MVP
en: https://mvp.support.microsoft.com/profile/L
luis
NUG: http://andorradotnet.com
Web: http://www.ordeeno.com
Blog: http://msmvps.com/blogs/lfranco
Geeks: http://geeks.ms/blogs/lfranco
o Marcado como respuesta Pablo RubioModerator martes, 5 de diciembre de
2017 16:51
lunes, 14 de junio de 2010 7:02
Responder
|
Citar

Lluis Franco
FIMARGE
8,310 Puntos
Moderador
 

0
Inicie sesión para votar
Benjamin, no me queda claro que quieres hacer o por que quieres hacer esto,
cual es la lógica de implementar toda esta funcionalidad en un solo SP, ya que
lo que te Lluis es totalmente cierto.

Tal vez si nos explicas de manera un poco mas detallada lo que estás
intentando hacer te podríamos ayudar mejor.

Saludos,
Mauricio Atanache G. - MCP
Bogotá - Colombia
"Bienaventurados los Pesimistas. Por que hacen BACKUPS."

lunes, 14 de junio de 2010 7:54

Responder
|
Citar

Mauricio Atanache
2,665 Puntos
 

0
Inicie sesión para votar
si me quedo claro con su exlpicacion que mejor es por procedimiento
separados, entonces miren estoy haciendo ahora todo por separado pero
tengo una duda con el insert, como puedo hacer para que cuando ingrese un
registro a la tabla ese no se repita, y me inserte el mismo 2 veces, nose sime
explico. mire el codigo por favor.

CREATE Procedure SFAC_Insertar


(
 @nFact int,
 @codEmisor int,
 @nombEmisor varchar(10),
 @codComercio int,
 @codCadena int
)
as
begin
 insert into RegistroFacturas ([nFact], [codEmisor], [nombEmisor],
 [codComercio], [codCadena]) values (@nFact, @codEmisor, @nombEmisor,
 @codComercio, @codCadena)
end
GO

lunes, 14 de junio de 2010 18:13


Responder
|
Citar

Aprendis24
Casa
370 Puntos
 

0
Inicie sesión para votar
y como le hago para usar ese procedimiento miren llevo esto: si me
encuentran errores les pediria por favor que me ayuden o me indiquen cuales
son.

private void btnGuardar_Click(object sender, EventArgs e)


        {                     
            try
            {
                using (SqlConnection conn = new SqlConnection(conexion))
                {
                    conn.Open();
                    SqlCommand cmd = new SqlCommand("SFAC_Insertar", conn);
                    cmd.CommandType = CommandType.StoredProcedure;

                    //Parametros de Entrada


                    SqlParameter nFactura = new SqlParameter("@nFact",
SqlDbType.Int);
                    nFactura.Value = List2.SelectedIndex;
                    cmd.Parameters.Add(nFactura);

                    SqlParameter codEmisor = new SqlParameter("@codEmisor",


SqlDbType.Int);
                    codEmisor.Value = List1.Text;
                    cmd.Parameters.Add(codEmisor);

                    SqlParameter nombEmisor = new SqlParameter("@nombEmisor",


SqlDbType.VarChar);
                    nombEmisor.Value = List1.SelectedValue;
                    cmd.Parameters.Add(nombEmisor);

                    SqlParameter codComercio = new


SqlParameter("@codComercio", SqlDbType.Int);
                    codComercio.Value = cbb_Comercio.SelectedValue;
                    cmd.Parameters.Add(codComercio);

                    SqlParameter codCadena = new SqlParameter("@codCadena",


SqlDbType.Int);
                    codCadena.Value = cbb_Cadena.SelectedValue;
                    cmd.Parameters.Add(codCadena);
                    //Parametros de salida
                    SqlDataAdapter da = new SqlDataAdapter(cmd);
                    DataTable dt = new DataTable();
                    da.Fill(dt);
                    //List3.Nodes.Add(dt);
                }
            }
            catch (Exception exp)
            {
                MessageBox.Show(exp.Message.ToString(), "Error");
                return;
            }
        }

lunes, 14 de junio de 2010 18:48


Responder
|
Citar

Aprendis24
Casa
370 Puntos
 

1
Inicie sesión para votar
hola

ese codig esta correcto, has definido los parametros, establecido el nombre
del SP y el tipo StoredProcedure en el command, parece estar todo bien

el unico detalle que le veo que por ahi de algun problema es que no defines el
tipo de dato correcto, por ejemplo aqui

SqlParameter codEmisor = new SqlParameter("@codEmisor", SqlDbType.Int);


codEmisor.Value = Convert.ToInt32 (List1.Text);
cmd.Parameters.Add(codEmisor);
no le defines el Value como entero, le estabas pasando un string, por ahi esto
peude afectar al filtro, revisa los otros campos numericos sino tienes que
hacer lo mismo

saludos
Leandro Tuttini

Blog
Buenos Aires
Argentina

o Propuesto como respuesta Pablo RubioModerator lunes, 4 de diciembre de


2017 16:05
lunes, 14 de junio de 2010 21:17
Responder
|
Citar

Leandro Tuttini
Globant
(MCC, MVP)
909,000 Puntos
 

0
Inicie sesión para votar
Amigos como puedo hacer para que un en parametro de entrada me retorne lo
que esta cargado en el treeview, yo lo estaba haciendo asi.

pero me aparece null osea vacio miren

SqlParameter codEmisor = new SqlParameter("@codEmisor", SqlDbType.Int);


                    codEmisor.Value = Convert.ToInt32(List1.Text);
                    cmd.Parameters.Add(codEmisor);

lunes, 14 de junio de 2010 21:32


Responder
|
Citar

Aprendis24
Casa
370 Puntos
 

0
Inicie sesión para votar
respondi en el otro post
http://social.msdn.microsoft.com/Forums/es-ES/vcses/thread/8d555d7f-b077-
4b43-a759-11ab263ff0f2

Leandro Tuttini

Blog
Buenos Aires
Argentina

martes, 15 de junio de 2010 4:20


Responder
|
Citar

Leandro Tuttini
Globant
(MCC, MVP)
909,000 Puntos
 

2
Inicie sesión para votar
Muchas Gracias leandro cierro la consulta ya esta resuelto el tema, al final lo
que hice separe todos los procedimientos en diferentes sp insert update y
delete. de esta forma:

 CREATE Procedure SFAC_Insertar


(
 @nFact int,
 @nombEmisor varchar(10),
 @codEmisor int,
 @codComercio int,
 @codCadena int
)
as
begin
 insert into RegistroFacturas ([nFact], [nombEmisor], [codEmisor],
[codComercio], [codCadena]) values (@nFact, @nombEmisor, @codEmisor,
@codComercio, @codCadena)
end
GO
CREATE procedure SFAC_EliminarDatos
(
 @nFact int,
 @codEmisor int,
 @nombEmisor varchar(10),
 @codComercio int,
 @codCadena int 
)
as
delete  from RegistroFacturas
 where @nFact = nFact
 and @codEmisor = codEmisor
 and @nombEmisor = nombEmisor
 and @codComercio = codComercio
 and @codCadena = codCadena

GO

CREATE procedure SFAC_GuardaRegistros


(
 @nFact integer,
 @codEmisor integer,
 @nombEmisor varchar(30)
)
as
begin
select nFact NumeroFactura, codEmisor CodigoEmisor, nombEmisor
NombreEmisor,codComercio CodigoComercio, nombComercio
NombreComercio  from RegistroFacturas
end
GO

CREATE procedure SFAC_ActualizarDatos


(
 @nFact int,
 @codEmisor int,
 @nombEmisor varchar(10),
 @codComercio int,
 @codCadena int 

as
update RegistroFacturas set @codEmisor = codEmisor, @nombEmisor =
nombEmisor, @codComercio = codComercio, @codCadena = codCadena
where @nFact = nFact
GO

o Marcado como respuesta Aprendis24 miércoles, 16 de junio de 2010 16:03

También podría gustarte