【问题标题】:My First MySQL Stored Procedure for updating two table have some error我的第一个更新两个表的 MySQL 存储过程有一些错误
【发布时间】:2014-02-08 05:18:24
【问题描述】:

我通过互联网找到了从一个表单更新两个表的最佳实践,我决定在 MySQL 中创建存储过程来插入数据。我不知道如何从存储过程中传递日期时间或时间戳以插入桌子。我对 MySQL 很陌生,遇到了几个错误。我的存储过程如下所示:

DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_insertUser`(
IN userId int(11) 
, IN userName varchar(15)
, IN passWord varchar(15)
, IN create_DateStamp datetime
, IN update_DateStamp datetime

BEGIN
INSERT INTO `Php_Project`.`User`
(userId,
userName,
passWord,
create_DateStamp,
update_DateStamp)


    VALUES
    (
    userId,
    userName,
    passWord,
    create_DateStamp,
    update_DateStamp
    );

我也有 create_Datestamp 的触发器:

USE `Php_Project`;
DELIMITER $$
CREATE DEFINER=`root`@`localhost` TRIGGER `User_BINS` BEFORE INSERT ON `User` FOR EACH        ROW
BEGIN
    -- Set the creation date
SET new.create_DateStamp= now();
End

我在 MySQL Workbenck 中创建了这个。当我尝试在查询窗口中调用 sproc 时出现错误:

CALL `Php_Project`.`sp_insertUser`(1234,surajnew55,password,now(),now());

错误提示:错误代码:1054。“字段列表”中的未知列“surajnew55”0.000 秒 请帮我弄清楚在这种情况下是如何工作的。

【问题讨论】:

  • 将输入 arg 'IN userName varchar(15)' 更改为 'IN theUserName varchar(15)'。然后将 VALUES 部分更改为使用“theUserName”而不是“userName”。我很确定存储的项目被您作为输入参数重载的 userName 列弄糊涂了。对所有这些列/inp arg 名称执行相同操作,以使列名称与输入 arg 名称不同。
  • @robnick 你成功了。谢谢老兄。

标签: php mysql stored-procedures


【解决方案1】:

你可以这样试试

字符串值应该在 MySQL 中的引号内传递

CALL `Php_Project`.`sp_insertUser`(1234,'surajnew55','password',now(),now());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-06
    • 1970-01-01
    • 2015-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-14
    相关资源
    最近更新 更多