mysql where in形式存儲過程如何傳遞帶有單引號的入參

對於存儲過程或者函數,有時有這樣的一個需求,傳遞一個參數,輸出一個結果。如:我傳遞一個帳號,返回這個帳號所擁有的權限。可是若是這個需求改了,我要傳遞少許的複數個帳號,獲取這些帳號權限,可是帳號的個數不限定,則此時須要用關鍵字IN,並將帳號集合傳遞給存儲過程或函數。實現的過程以下: 對錶oasys_dept,有以下的數據:sql

須要輸入參數id(INT形式),調用存儲過程獲得結果。 MYSQL實現(使用方法find_in_set):函數

DELIMITER $$
CREATE PROCEDURE query_company(IN cname_in VARCHAR(100), OUT result_out INT)
BEGIN
 SELECT count(*) INTO result_out FROM oasys_dept where find_in_set(id, cname_in);
END
$$
DELIMITER ;

調用存儲過程sqlserver

set @ids='1,2';
set @recordcount=0;
CALL query_company(@ids, @recordcount);
SELECT @recordcount;

結果:3d

這裏id是INT類型的,那若是換成字符串類型,我是否是須要像sqlserver同樣傳遞'key1','key2'這樣帶有多對單引號格式的參數呢?這裏把參數由主鍵集合改爲dept_name集合試試:code

DELIMITER $$
CREATE PROCEDURE query_company(IN cname_in VARCHAR(100), OUT result_out INT)
BEGIN
 SELECT count(*) INTO result_out FROM oasys_dept where find_in_set(dept_name, cname_in);
END
$$
DELIMITER ;

調用存儲過程:server

set @ids='家裏蹲有限公司,野雞公司';
set @recordcount=0;
CALL query_company(@ids, @recordcount);
SELECT @recordcount;

效果同樣。也就是說,實際操做的時候,不須要傳遞'key1','key2'這樣格式的參數給存儲過程,而是'key1,key2'這樣的格式,這種形式彷佛與sqlserver略不一樣。blog

相關文章
相關標籤/搜索