MySQL编写存储过程,将一列数据('张三,李四,王五')插入临时表,传入什么参数数据临时表中就有啥数据
时间: 2024-05-10 15:19:15 浏览: 5
可以使用以下代码编写存储过程,将传入的参数数据插入临时表:
```sql
CREATE PROCEDURE insert_temp_table(IN input_data VARCHAR(255))
BEGIN
CREATE TEMPORARY TABLE temp_table (name VARCHAR(50));
SET @sql = CONCAT('INSERT INTO temp_table (name) VALUES (', REPLACE(input_data, ',', '), ('), ');');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END;
```
调用存储过程时,将需要插入的数据作为参数传入即可:
```sql
CALL insert_temp_table('张三,李四,王五');
```
执行后,临时表temp_table中的数据就是'张三'、'李四'、'王五'。
相关问题
删除张三李四在表中的数据mysql
假设你有一个表名为 `users`,其中有一个名为 `name` 的列,你想要删除名为 "张三" 和 "李四" 的用户数据,你可以使用以下 SQL 语句:
```
DELETE FROM users WHERE name IN ('张三', '李四');
```
这将删除名为 "张三" 和 "李四" 的所有行。请注意,删除操作是不可逆的,因此在执行此操作之前,请务必备份数据。
mysql存储过程实例——实现查询数据表,有则更新无则插入
MySQL存储过程可以实现查询数据表并根据查询结果进行更新或插入操作。下面是一个示例:
创建一个存储过程:
```
DELIMITER //
CREATE PROCEDURE update_or_insert_data(
IN p_id INT,
IN p_name VARCHAR(50),
IN p_age INT
)
BEGIN
DECLARE v_count INT;
-- 查询数据表中是否存在指定id的记录
SELECT COUNT(*) INTO v_count FROM 表名 WHERE id = p_id;
-- 如果记录存在,则更新数据
IF v_count > 0 THEN
UPDATE 表名 SET name = p_name, age = p_age WHERE id = p_id;
-- 如果记录不存在,则插入新数据
ELSE
INSERT INTO 表名 (id, name, age) VALUES (p_id, p_name, p_age);
END IF;
END //
DELIMITER ;
```
在上面的存储过程中,首先声明了一个变量v_count用于存储查询结果的记录数。然后通过查询语句SELECT COUNT(*) INTO v_count FROM 表名 WHERE id = p_id来获取id为p_id的记录数。根据查询结果判断记录是否存在,如果存在则使用UPDATE语句更新数据,如果不存在则使用INSERT语句插入新数据。
调用存储过程:
```
CALL update_or_insert_data(1, '张三', 25);
```
在调用存储过程时传入需要更新或插入的数据的参数值。例如上述代码中传入的参数值为1、'张三'和25,表示更新或插入id为1,name为'张三',age为25的数据。
通过使用存储过程,我们可以简化复杂的更新或插入操作,并且可以提高数据库的性能和效率。