MYSQL預存程序實現in傳入參數 where in('1','2')

來源:互聯網
上載者:User

標籤: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')

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.