[英]MYSQL create stored procedure included DELETE, SELECT and INSERT
我閱讀了手冊,可以創建簡單的存儲過程。 它的工作正常。 但是現在我需要為我創建復雜的過程,包括DELETE,SELECT和INSERT
第一:
delete from 111test;
下一個:
SELECT u.user_id, u.user_nickname, u.country_id, u.city_id, u.avatar_id,
(SELECT name FROM countries WHERE id = u.country_id) country_name,
(SELECT name FROM cities WHERE id = u.city_id) city_name
FROM users_onsite uo
LEFT JOIN users u ON u.user_id = uo.user_id
WHERE u.avatar_id > 0;
接下來:
INSERT INTO 111test (type,user_id,some_datas1,some_datas2,some_datas3)
values (53,$user_id,'$user_nickname',$country_name','$city_name')
因此,我的程序是:
BEGIN
DECLARE var_user_id INT(50);
DECLARE var_some_datas1 varchar(255);
DECLARE var_some_datas2 varchar(255);
DECLARE var_some_datas3 varchar(255);
delete from 111test;
SELECT u.user_id, u.user_nickname, u.country_id, u.city_id, u.avatar_id,
(SELECT name FROM countries WHERE id = u.country_id) country_name,
(SELECT name FROM cities WHERE id = u.city_id) city_name
FROM users_onsite uo
LEFT JOIN users u ON u.user_id = uo.user_id
WHERE u.avatar_id > 0;
INSERT INTO 111test (type,user_id,some_datas1,some_datas2,some_datas3)
VALUES (53,var_user_id,var_some_datas1,var_some_datas2,var_some_datas3);
END
結果:您的SQL查詢已成功執行1172行,該行受該過程中的最后一條語句影響
但是在表111test中插入了零行。
請有人幫我。
那么,這里的路障是什么。 您可以創建包含DML操作的過程。 請參閱下面的示例(盡管在SQL Server中創建)
create procedure sp_crud_test
as
begin
delete from sample1;
select * from sample3;
insert into sample1 select * from sample3;
end
exec sp_crud_test
所以在你的情況下
delimiter //
CREATE PROCEDURE sp_crud_test (IN
user_id int, IN user_nickname varchar(10),
IN country_name varchar(10),IN city_name varchar(10))
BEGIN
delete from 111test;
SELECT u.user_id, u.user_nickname, u.country_id, u.city_id, u.avatar_id,
(SELECT name FROM countries WHERE id = u.country_id) country_name,
(SELECT name FROM cities WHERE id = u.city_id) city_name
FROM users_onsite uo
LEFT JOIN users u ON u.user_id = uo.user_id
WHERE u.avatar_id > 0;
INSERT INTO 111test (type,user_id,some_datas1,some_datas2,some_datas3)
values (53,user_id,user_nickname,country_name,city_name)
END//
比這樣稱呼它
CALL sp_crud_test(10,'tk','US','london')
編輯:現在,您正在嘗試將選擇查詢值插入該表; 應該像下面這樣
delimiter //
CREATE PROCEDURE sp_crud_test
BEGIN
delete from 111test;
INSERT INTO 111test (type,user_id,some_datas1,some_datas2,some_datas3)
SELECT '53' as type, u.user_id, u.user_nickname,
(SELECT name FROM countries WHERE id = u.country_id) country_name,
(SELECT name FROM cities WHERE id = u.city_id) city_name
FROM users_onsite uo
LEFT JOIN users u ON u.user_id = uo.user_id
WHERE u.avatar_id > 0;
END//
然后像
CALL sp_crud_test
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.