7
目標是根據輸入變量在Mysql存儲過程中更改查詢字符串。Mysql根據邏輯在存儲過程中動態構建查詢字符串
像這樣:
CREATE DEFINER=`root`@`localhost` PROCEDURE `func`(type VARCHAR(15))
BEGIN
SET @type = type;
-- Check for the sort parameter
if @type="asc" THEN
SET @sort = " order by name asc";
elseif @type="desc" THEN
SET @sort = " order by name desc";
else
SET @sort ="";
end if;
SELECT id, name from table @sort;
END
的解決方案是使用執行和CONCAT: CREATE DEFINER ='root' @ 'localhost' PROCEDURE'test'(input VARCHAR(15)) BEGIN SET @input = input; if @ input =「asc」then SET @sort =「order by ActivityLogKey asc」; elseif @input =「desc」then SET @sort =「order by ActivityLogKey desc」;其他 SET @sort =「」; end if; SET @query = CONCAT('select * from activitylog',@ sort,'limit 0,5'); PREPARE stmt FROM @query; EXECUTE stmt; DEALLOCATE PREPARE stmt; END – 2011-12-18 03:57:29
如果這是解決方案,爲什麼你沒有添加它作爲答案,並接受它或編輯你的問題。 – 2011-12-18 11:51:13
沒有100的聲望,我必須等待8個小時才能回答我自己的問題 – 2011-12-18 17:10:40