※ 引述《OpenGoodHate (什麼東西什麼東西)》之銘言:
: stored procedure 做的事很簡單
: 就只有
: SELECT * FROM aTab WHERE aaa IN (傳入值);
: 傳入值是123,456,789
: 但是這樣寫SP沒辦法運作
: 如果是這樣的話該如何處理這樣的問題呢
感謝各位解答
我PO一下我的做法
DELIMITER $$
DROP PROCEDURE IF EXISTS `atest` $$
CREATE DEFINER=`root`@`%` PROCEDURE `atest`(
IN `_U` nvarchar(4000)
,OUT `_RTN` INTEGER )
BEGIN
set @SQL = CONCAT('SELECT * FROM aTab where aaa IN ( ',_U,' );');
PREPARE _data FROM @SQL;
EXECUTE _data;
DROP PREPARE _data;
SET _RTN = 1;
END $$
DELIMITER ;
基本上就把所有的SQL語法先轉成字串
再和外部傳進來的數值串接後執行即可
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 60.248.166.173
※ 編輯: OpenGoodHate 來自: 60.248.166.173 (09/30 18:06)