存储过程 CRUD MySQL

Posted

技术标签:

【中文标题】存储过程 CRUD MySQL【英文标题】:Stored Procedure CRUD MySQL 【发布时间】:2015-04-18 22:55:34 【问题描述】:

我在 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。

谢谢。

【问题讨论】:

尽量不要在@Nombodega中使用@ 附带说明,我将为每个操作单独存储一个过程。 【参考方案1】:

感谢您的帮助,但我很忙。

在阅读了很多 SP MYSQL 之后,我发现这是不可能的。我会发送每个值。

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

【讨论】:

【参考方案2】:

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

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

【讨论】:

以上是关于存储过程 CRUD MySQL的主要内容,如果未能解决你的问题,请参考以下文章

如何从 SQL Server Management Studio 中的表生成 CRUD 存储过程

MyBatis调用存储过程执行CRUD

课时5 入参为HashMap,以及mybatis调用存储过程CRUD

MySQL命令

mysql 存储过程

mysql存储过程知识点难学吗?