当前位置: 首页 > 知识库问答 >
问题:

SQL插入,更新存储过程

曹均
2023-03-14
CREATE TABLE `db_customer`.`customer` (
  `customer_id` INT NOT NULL AUTO_INCREMENT,
  `first_name` VARCHAR(45) NOT NULL,
  `lastname` VARCHAR(45) NOT NULL,
  `date_of_birth` DATE NOT NULL,
  `country` VARCHAR(45) NOT NULL,
  `email` VARCHAR(100) NOT NULL,
  `username` VARCHAR(45) NOT NULL,
  `short_biography` TEXT NOT NULL,
  `photo` BLOB NULL,
  PRIMARY KEY (`customer_id`)
);

分隔符$$CREATE PROCEDURE中的表格(名字VARCHAR(45),姓氏VARCHAR(45),出生日期,国家VARCHAR(45),电子邮件VARCHAR(100),用户名VARCHAR(45),简短传记文本)开始插入客户(姓名、姓氏、出生日期、国家、电子邮件、用户名、简短传记)值(客户id、姓名、姓氏、出生日期、国家、电子邮件、用户名、简短传记);结束$$

定界符;


共有2个答案

卢宜然
2023-03-14

1)您的列名与SP中使用的列不匹配(first_namelaast_name)。

2) customer\u id是自动递增的,因此不需要在insert块内使用。

3)如本答案所建议,使用DELIMITER

DELIMITER $$
CREATE PROCEDURE `table_in` 
(first_name VARCHAR(45), lastname VARCHAR(45), date_of_birth DATE,
country VARCHAR(45), email VARCHAR(100), username VARCHAR(45), short_biography TEXT)
BEGIN
    INSERT INTO customer (`name`, lastname, date_of_birth, country, email, username, short_biography) 
    VALUES (first_name, lastname, date_of_birth, country, email, username, short_biography);
END$$

DELIMITER ;
姬墨竹
2023-03-14

您必须更改分隔符。

DELIMITER $$

CREATE PROCEDURE `table_in` 
(customer_id, first_name VARCHAR(45), lastname VARCHAR(45), date_of_birth DATE,
country VARCHAR(45), email VARCHAR(100), username VARCHAR(45), short_biography TEXT)
BEGIN
    INSERT INTO customer (first_name, laast_name, date_of_birth, country, email, username, short_biography) VALUES (customer_id, first_name, laast_name, date_of_birth, country, email, username, short_biography);
END$$

DELIMITER ;

然后它将编译。否则MySQL将逐个指令解释存储过程指令。

 类似资料:
  • 本文向大家介绍SQLServer用存储过程实现插入更新数据示例,包括了SQLServer用存储过程实现插入更新数据示例的使用技巧和注意事项,需要的朋友参考一下 实现 1)有相同的数据,直接返回(返回值:0); 2)有主键相同,但是数据不同的数据,进行更新处理(返回值:2); 3)没有数据,进行插入数据处理(返回值:1)。 【创建存储过程】 【执行方式】 返回值0,已经存在相同的 返回值1,插入成功

  • 问题内容: 这个问题已经在这里有了答案 : 如何在存储过程中一次全部插入两个表?[重复] (1个答案) 7年前关闭。 我有2张桌子,和: : : 我想编写一个存储过程,该过程将插入两个表中 更准确地说,是插入with ,它将返回用作的外键。 我进行了很多搜索,但未找到任何解决方案。 问题答案: 如下图所示。在这种情况下,您可以用来获取最后一个自动生成的ID以及此存储过程的作用域:

  • 问题内容: 我正在尝试创建一个存储的proc,它返回所有已更新的记录。 我的更新查询是这样的: 我只是不确定如何返回这些特定记录。 问题答案: 您可以用来获取语句已修改的行。 例子;

  • 我们有大约100000条记录要插入数据库。在Hibernate批插入中执行此操作是一个好主意吗?选择批量大小的策略应该是什么? 或者我们应该为批量插入调用存储过程?无法获取有关将对象数组从Hibernate传递到DB存储过程的任何信息。 或者两者的混合搭配会加快这一过程。比如批量调用存储过程?

  • 我如何要求axon刷新EventStore的缓存? 我知道这样插入事件绝对不是一个好的做法,但我们需要一个工作区。

  • 问题内容: 我想要做的就是在我的数据库的用户,但它应该排,一个新行。 Ofcourse我连接到数据库第一和的,并从URL字符串。 可以,但是只添加新行; 这是我尝试过的; 和 和 但是它们都不起作用,我在做什么错? 任何帮助是极大的赞赏! 问题答案: 如果不存在约束,请在您的列上创建约束: 用途: (subs_name, subs_email, subs_birthday) VALUES (?,