存储过程 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 存储过程