存储过程CRUD MySQL

时间:2015-02-18 02:54:38

标签: c# mysql sql sql-server entity-framework

我在MySQL中开发的程序有问题,这是我的第一次。几个月前,我在MSSQL中做了一个小的CRUD(选择,插入,更新),只发送了所需的数据。

create procedure sp_Bodegas (@Opcion varchar(10), @CodBodega int = null, @NomBodega varchar(75) = null, @DirBodega varchar(150) = null, @EstBodega bit = null)
as
begin
set nocount on
if (@Opcion='SELECT')
begin
select cod_Bodega as CodBodega, nom_Bodega as NomBodega, dir_Bodega as DirBodega, est_Bodega as EstBodega from inv_Bodegas
end
if (@Opcion='INSERT')
begin
insert into inv_Bodegas (cod_Bodega, nom_Bodega, dir_Bodega, est_Bodega) values (@CodBodega, @NomBodega, @DirBodega, @EstBodega)
end
if (@Opcion='UPDATE')
begin
update inv_Bodegas set nom_Bodega = @NomBodega, dir_Bodega = @DirBodega where cod_Bodega = @CodBodega
end
set nocount off
end;

但是几天前我开始使用MySQL并尝试执行相同的过程但是这不能使用诸如'@NomBodega = Null'之类的变量来发送任何数据所需的选项。然后创建输入变量来接收数据,但现在每次运行程序时都需要发送许多参数。

create procedure sp_Bodegas (in Opcion varchar(10), in CodBodega int, in NomBodega varchar(75), in DirBodega varchar(150), in EstBodega bit)
begin
if Opcion = 'SELECT' then 
    select cod_Bodega as CodBodega, nom_Bodega as NomBodega, dir_Bodega as DirBodega, est_Bodega as EstBodega from inv_Bodegas;
end if;
if Opcion = 'INSERT' then
    insert into inv_Bodegas (cod_Bodega, nom_Bodega, dir_Bodega, est_Bodega) values (@CodBodega, @NomBodega, @DirBodega, @EstBodega);
end if;
if Opcion = 'UPDATE' then
    update inv_Bodegas set nom_Bodega = @NomBodega, dir_Bodega = @DirBodega where cod_Bodega = @CodBodega;
end if;
end;

我想知道如何在我的应用程序中使它工作得非常相似,我在我的数据库中使用aspx和EF。

感谢。

2 个答案:

答案 0 :(得分:0)

您已将变量声明为NomBodega,但在您的过程中使用它时,您使用的是@NomBodega。

只有传入out参数以在程序运行后选择值时,才需要@NomBodega。

答案 1 :(得分:0)

谢谢你的帮助,但我很忙。

在阅读了很多SP MYSQL后我发现是不可能的。我发送每一个价值。

Is it possible to have a default parameter for a mysql stored procedure?