Mysql 存储过程 UPDATE语句 字段=传递过来的参数字符串参数
game28表:idkjkjNo1000009990099811|3|5|799712|12|8|1存储过程:CREATEDEFINER=`root`@`localhos...
game28表:
id kj kjNo
1000 0 0
999 0 0
998 1 1|3|5|7
997 1 2|12|8|1
存储过程:
CREATE DEFINER=`root`@`localhost` PROCEDURE `web_kj_game28`(
p_No INT,
p_gfNo VARCHAR(500) CHARACTER SET gbk
)
SQL SECURITY INVOKER
BEGIN
...... 这里省略和下句没关系的代码
UPDATE game28 SET kj = 1,kgNo = p_gfNo WHERE id = p_No;
...... 这里省略和上句没关系的代码
END
现在执行存储过程,输入p_No,p_gfNo参数之后,game28表中kgNo字段与输入的参数(字符串)不符合,且是在执行commit之后才会存进数据库,否则报错并且不入数据库。
UPDATE game28 SET kj = 1,kgNo = p_gfNo WHERE id = p_No;
这句中 kgNo = p_gfNo , p_gfNo 为字符串,是否需要加单或者双引号,在原生sql语句中,应该是kgNo = '$p_gfNo' ,存储过程中是不是要用其它语法加还是另有蹊跷? 展开
id kj kjNo
1000 0 0
999 0 0
998 1 1|3|5|7
997 1 2|12|8|1
存储过程:
CREATE DEFINER=`root`@`localhost` PROCEDURE `web_kj_game28`(
p_No INT,
p_gfNo VARCHAR(500) CHARACTER SET gbk
)
SQL SECURITY INVOKER
BEGIN
...... 这里省略和下句没关系的代码
UPDATE game28 SET kj = 1,kgNo = p_gfNo WHERE id = p_No;
...... 这里省略和上句没关系的代码
END
现在执行存储过程,输入p_No,p_gfNo参数之后,game28表中kgNo字段与输入的参数(字符串)不符合,且是在执行commit之后才会存进数据库,否则报错并且不入数据库。
UPDATE game28 SET kj = 1,kgNo = p_gfNo WHERE id = p_No;
这句中 kgNo = p_gfNo , p_gfNo 为字符串,是否需要加单或者双引号,在原生sql语句中,应该是kgNo = '$p_gfNo' ,存储过程中是不是要用其它语法加还是另有蹊跷? 展开
1个回答
展开全部
mysql存储过程支持用表作为参数。
这个问题在MySQL 5.0以前非常麻烦,但是在MySQL 5.0.13版之后,由于引入了PREPARE语句,一切变得简单了。
例子如下(已验证):
DROP PROCEDURE IF EXISTS `newtable`;
CREATE PROCEDURE `newtable`(IN tname varchar(64))
BEGIN
SET @sqlcmd = CONCAT('CREATE TABLE ', tname, ' (id int NOT NULL AUTO_INCREMENT, name varchar(64) DEFAULT NULL, PRIMARY KEY (`id`))');
PREPARE stmt FROM @sqlcmd;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END;
call newtable('abc');
这个问题在MySQL 5.0以前非常麻烦,但是在MySQL 5.0.13版之后,由于引入了PREPARE语句,一切变得简单了。
例子如下(已验证):
DROP PROCEDURE IF EXISTS `newtable`;
CREATE PROCEDURE `newtable`(IN tname varchar(64))
BEGIN
SET @sqlcmd = CONCAT('CREATE TABLE ', tname, ' (id int NOT NULL AUTO_INCREMENT, name varchar(64) DEFAULT NULL, PRIMARY KEY (`id`))');
PREPARE stmt FROM @sqlcmd;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END;
call newtable('abc');
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询