1
MYSQLで作業しているので、ストアドプロシージャとビューを実行する必要がありますが、関数から返された値を取得する際に問題が発生しました。 がここに関数の:mysql関数から返された値を取得することができません
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
:
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ファンクションコードです
誰でも私がMYSQLで書いた機能がProperMannerであるかどうか教えてください。私を助けてください。 ありがとうございます。
実際に、特定の従業員に割り当てられた複数のbranchIdsを取得しようとしています。クエリに問題はありますか?それを取得する他の方法は...私に教えてください – SUSH
@SUSH、http://dev.mysql.com/doc/refman/5.0/ja/group-by-functionsを調べてください.html#function_group-concat。これはmysqlの拡張であり、必要なもの(特定の従業員に割り当てられたブランチIDのカンマ区切りリストなど)をSPに頼らずに提供します。完全に異なる注釈 - あなたがIDのリストを取得しているという事実は、別のクエリでそれを使用することを示唆しています。これは通常、適切な方法ではありません。サブクエリや結合を使用してINを使用して取得できるものはすべて取得できます。 – Unreason
あなたが言ったことは正しいことです。この関数をビューで使用して、カンマで区切られた複数のブランチを取得しています。 – SUSH