標籤:android style blog io ar color sp for on
android 伺服器端開發中遇到這麼一個問題:
突然發現將字串傳入到預存程序,參數為 ‘1‘,‘2‘ ,竟然執行無效
所以看到網上有在預存程序中直接拼湊sql的代碼,今天也試了一下,可以執行了,代碼如下:
CREATE DEFINER = ‘abc‘@‘%‘PROCEDURE ConfirmAcceptorListProc(in p_task_id varchar(20),in p_user_ids text,out p_msgtype varchar(20),out p_msg varchar(20))begin DECLARE m_user_ids varchar(1000);DECLARE t_error INTEGER DEFAULT 0;DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET t_error=1; SET @SEL=‘update go_task_acceptor set status =\‘2\‘ where status = \‘1\‘ AND task_id = \‘‘; set @sentence = concat(@sel,p_task_id,‘\‘ AND acceptor_id in (‘,p_user_ids,‘);‘); -- 連接字串產生要執行的SQL語句 prepare stmt from @sentence; -- 預編釋一下。 “stmt”預編釋變數的名稱, START TRANSACTION; execute stmt; -- 執行SQL語句 select row_count() into p_msg; if t_error = 1 then ROLLBACK; set p_msgtype = ‘-1‘; else COMMIT; set p_msgtype = ‘1‘; end if;deallocate prepare stmt; -- 釋放資源end
以上預存程序裡面拼湊出來的sql代碼是:
update go_task_acceptor set status =‘2‘ where task_id = p_task_id and status = ‘1‘ and acceptor_id in (‘s‘,‘4‘);
MYSQL預存程序實現in傳入參數 where in('1','2')