私のテーブル値関数は空の結果を返します。テーブル値関数が正しくフォーマットされているかどうかわかりません。
すべての変数をハードコーディングし、各 select ステートメントを単独で実行しましたが、結果を返すテーブルを取得できません。
また、テーブル変数を入力して @Table_Var を選択すると、正しい結果が返されたので、コードを構造化した方法と関係があります。
すべてのステートメントが正しく機能しています。関数からデータを返すのに問題があります。
誰かが私が間違っているとすぐに何かを見ますか?
編集
あまり混乱しないように、その緩いコードを関数に移動しました。
関数は正しく機能し、他のすべては、テーブルを返そうとしたときに受け入れます。
--select * from [dbo].[fn_Professionals_GetMiniUserInfo](null,'a9cec535-ac48-4197-b8a0-87702cb14e52')
ALTER FUNCTION [dbo].[fn_NonPros_GetMiniUserInfo]
(
@NonProID INT = NULL,
@UserID UNIQUEIDENTIFIER = NULL
)
RETURNS
@Table_Var TABLE
(
-- Add the column definitions for the TABLE variable here
Avatar NVARCHAR(50),
ID int,
FName varchar(50),
LName varchar(50),
Title varchar(20),
UserID UNIQUEIDENTIFIER,
CompanyID INT,
CoWorkers INT,
Street varchar(60),
City varchar(30),
StateCD char(2),
ZipCode varchar(5),
WorksFor VARCHAR(30),
Phone VARCHAR(12),
Email NVARCHAR(256)
)
AS
BEGIN
INSERT INTO @Table_Var
SELECT
(SELECT [AFCCInc_Com].[dbo].[aspnet_fn_GetProfileElement]('Avatar',ap.PropertyNames,ap.PropertyValuesString )FROM AFCCInc_Com.dbo.aspnet_Profile ap
WHERE ap.UserId = nonPro.UserID)as'Avatar',
na.NonProID'ID',c.FirstName'FName',c.LastName'LName',c.Title,@UserID 'UserID',
ci.CompanyID,ci.CoWorkers,a.AddressLine, cit.City,s.StateCD,z.ZIPCode,ci.CompanyName'WorksFor',
p.Phone,
(SELECT Email FROM AFCCInc_Com.dbo.aspnet_Membership m WHERE m.UserId = nonPro.UserID)'Email'
FROM NonPros.NonPros nonPro with(nolock) JOIN
NonPros.utbNonProsUtbAddresses na with(nolock) on na.NonProID = nonPro.NonProID JOIN
dbo.fn_GetCompanyInfo(@UserID) ci ON ci.UserID = nonPro.UserID JOIN
Person.utbAddresses a with(nolock) ON a.AddressID = na.AddressID JOIN
[Person].[UtbAddressesutbContact] ac with(nolock)on ac.AddressID = a.AddressID JOIN
Person.utbContact c with(nolock)ON ac.ContactID = c.ContactID JOIN
Person.utbContactUtbPhones cp with(nolock)ON c.ContactID = cp.ContactID JOIN
Person.utbPhones p with(nolock)ON p.PhoneID = cp.PhonesID JOIN
Person.utbZipCodes z WITH(NOLOCK) ON z.ZipCodeID = a.ZipCodeID JOIN
Person.utbCitys cit WITH(NOLOCK) ON cit.CityID = z.CityID JOIN
Person.utbStates s WITH(NOLOCK) ON s.StateCD = z.StateCD
WHERE c.ContactTypeID = 7/*me*/
AND p.PhoneTypeID = 6/*main*/
AND nonPro.UserID = 'a9cec535-ac48-4197-b8a0-87702cb14e52';
RETURN
END;
alter FUNCTION fn_GetCompanyInfo (@UserID UNIQUEIDENTIFIER)
RETURNS
@Table_Var TABLE
(
UserID UNIQUEIDENTIFIER,
CompanyID INT,
CompanyName VARCHAR(50),
CoWorkers INT
)
AS
BEGIN
INSERT INTO @Table_Var
SELECT @UserID,
p.ProfessionalID,
p.ProfessionalName,
(SELECT COUNT(NonProID)'CoWorkers' FROM BuildingPros.utbProfessionalsUtbNonPros with(nolock)WHERE ProfessionalID = p.ProfessionalID)
FROM BuildingPros.utbProfessionalsUtbNonPros bp with(nolock) JOIN
BuildingPros.utbProfessionals p with(nolock)ON p.ProfessionalID = bp.ProfessionalID
WHERE bp.NonProID = (SELECT NonProID FROM NonPros.NonPros where UserID = @UserID);
RETURN
END
行く