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