1
由於一週使用MYSQL,需要執行存儲過程以及視圖,但是面臨一些問題檢索函數返回的值。 這裏的功能:無法檢索從mysql函數返回的值
CREATE DEFINER=`root`@`localhost` FUNCTION `GetProductIdsStringByEnquiryId`
(
InEnquiryId int
) RETURNS varchar(4000) CHARSET utf8
BEGIN
DECLARE InProductIds varchar(4000);
DECLARE ProductId varchar(50);
DECLARE x,y,z INT;
DECLARE sp1_cursor CURSOR FOR SELECT ProductId FROM enquiryproductid where
EnquiryId=InEnquiryId;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET z = 1;
SET InProductIds='';
OPEN sp1_cursor;
REPEAT
FETCH sp1_cursor INTO ProductId;
SETInProductIds=concat(InProductIds,ProductId,',');
UNTIL (z=1)
END REPEAT;
CLOSE sp1_cursor;
RETURN InProductIds ;
END
我最初與SQL Server 2005,而我已經寫在他們我試着在MySQL作爲上述轉換它的函數的工作, 這裏的SQL功能代碼:
CREATE function [dbo].[GetBranchIdsStringByEmployeeId]
(
@EmployeeId as integer
)
returns nvarchar(4000)
as
begin
declare @BranchIds as nvarchar(4000)
set @BranchIds=''
if exists(select 1 from dbo.BranchEmployees where [email protected])
begin
select @[email protected]+cast(BranchId as nvarchar(50))
+',' from dbo.BranchEmployees where [email protected]
order by BranchId
end
return @BranchIds
end
任何人都可以讓我知道如果功能我寫在MYSQL中是否在ProperManner或不是?請幫助我。 謝謝。
其實我試圖檢索分配給特定員工的多個分支ID。他們在查詢中存在問題嗎?以其他任何方式獲取他們...請讓我知道 – SUSH 2010-12-17 09:56:07
@SUSH,檢查http://dev.mysql.com/doc/refman/5.0/en/group-by-functions .html#function_group-concat。這是MySQL的擴展,併爲您提供所需的內容(逗號分隔的分配給特定員工的分支ID列表等),而不訴諸SP。完全不同的說明 - 您收到ID列表的事實表明您將在另一個查詢中使用該列表。這通常不是正確的方法 - 你可以通過子查詢和/或連接獲得任何你會用IN獲得的東西。 – Unreason 2010-12-17 11:39:59
雅你說的是對的,我在視圖中使用這個函數來檢索多個分支,每個分支都以逗號分隔。 – SUSH 2010-12-20 07:05:56