mysql存储过程中,delete语句未根据where条件进行筛选,求救了。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql存储过程中,delete语句未根据where条件进行筛选,求救了。相关的知识,希望对你有一定的参考价值。
每次执行时,product_view 这个表里的数据都会被全部清空。
请问这是为什么?还是我没写对?
求解决啦。
CREATE PROCEDURE `product_view_sp`(IN product_id BIGINT)
BEGIN
set @product_id=product_id;
DELETE FROM product_view where `product_id`=@product_id;
INSERT into product_view(`product_id`,
`product_key`,
`product_value`,
`key_name`,
`keyword`,
`category_id`,
`category_name`,
`display`,
`search`,
`serial_number`,
`field_type`,
`default`,
`do_group`,
`cid`) select product.product_id,
product_extend.product_key,
product_extend.product_value,
product_mould.another_name,
product_mould.keyword,
product.category_id,
pcategory.category_name,
product_mould.dispaly,
product_mould.search,
product_mould.serial_number,
product_mould.field_type,
product_mould.defalut,
product_mould.do_group,
pcategory.cid
from product,product_extend,product_mould,pcategory
WHERE product.product_id=product_extend.product_id
and product_mould.id=product_extend.product_key
and product.category_id=pcategory.category_id
and product_mould.isdel=0
and product.product_id=@product_id
ORDER BY product.product_id,product_mould.serial_number;
END
已解决。
删除:set @product_id=product_id;
输入参数改成pid,其它对应的地方都改了,就可以了。具体原因不明,工作太忙,不深究了
mysql存储过程
【中文标题】mysql存储过程【英文标题】:mysql stored procedure 【发布时间】:2011-07-01 00:55:09 【问题描述】:我需要在存储过程中回显一条语句
分隔符 $$ 如果存在 `Edit_table` 则删除过程 $$ 创建过程`Edit_table` (in_db_nm varchar(20),in_tbl_nm varchar(20),in_your_query varchar(200)) 确定性开始 select concat('表',in_tbl_nm, '未找到'); 结束 $$ 分隔符;这是我在运行它时从控制台得到的,它似乎总是打印第一行,因为那是表列名,有没有办法删除它?
concat('表',in_tbl_nm, '未找到') 未找到表 xxxxx【问题讨论】:
【参考方案1】:分隔符 $$
如果存在则删除过程Edit_table
$$
创建过程Edit_table
(in_db_nm varchar(20),in_tbl_nm
varchar(20),in_your_query varchar(200))确定性开始
select concat('Table ',in_tbl_nm, 'not found') as DisplayData;
结束$$ 分隔符;
这会将标题更改为“DisplayData”
您也可以使用 --skip-column-names 选项启动 MySQL 以隐藏列名
【讨论】:
以上是关于mysql存储过程中,delete语句未根据where条件进行筛选,求救了。的主要内容,如果未能解决你的问题,请参考以下文章