我在MySQl Workbench上編寫了一個存儲過程(sp_archivev3),如下所示.基本上,将值從一個資料庫插入另一個資料庫.
-- --------------------------------------------------------------------------------
-- Routine DDL
-- Note: comments before and after the routine body will not be stored by the server
-- --------------------------------------------------------------------------------
DELIMITER $$
CREATE DEFINER=`MailMe`@`%` PROCEDURE `sp_archivev3`()
BEGIN
INSERT INTO
send.sgev3_archive(a_bi,
b_vc,
c_int,
d_int,
e_vc,
f_vc,
g_vc,
h_vc,
i_dt,
j_vc,
k_vc,
l_vc,
m_dt,
n_vch,
o_bit)
SELECT a_bi,
b_vc,
c_int,
d_int,
e_vc,
f_vc,
g_vc,
h_vc,
i_dt,
j_vc,
k_vc,
l_vc,
m_dt,
n_vch,
o_bit
FROM send.sgev3
WHERE m_dt BETWEEN '2014-06-09' AND CURDATE();
END
當我運作調用sp_archivev3(); ,我收到錯誤代碼錯誤代碼1046:沒有資料庫
選擇通過在側欄的SCHEMAS清單中輕按兩下其名稱來選擇要使用的預設DB.
請讓我知道我的存儲過程有什麼問題.
解決方法:
問題是MySQL不知道應該執行哪個名為sp_archivev3的過程; MySQL不知道要檢視哪個資料庫.(存儲程式是特定資料庫中的對象,就像表是特定資料庫中的對象一樣.)
使用USE語句指定目前資料庫:
use mydatabase;
call sp_archivev3();
或者使用資料庫名稱限定程式:
call mydatabase.sp_archivev3();
标簽:mysql,stored-procedures
來源: https://codeday.me/bug/20190716/1477244.html