ユーザー関数から返された値でテーブルを更新する際に問題があり、その方法がわかりませんでした。
環境:MsSql
DECLARE @files TABLE
(
Id uniqueidentifier,
Name nvarchar(255),
FolderId uniqueidentifier,
IsCheckedOut bit,
CheckedOutBy nvarchar(50),
IsDeleted bit,
IsVirtual bit,
Content varbinary(MAX),
FolderPath nvarchar(MAX),
CultureCode varchar(16)
)
UPDATE @files
SET Content= (SELECT TOP 1 Content FROM fnGetFileContentById (@changeListId, Id, @autoRevert,@cultureCode,@defaultCultureCode)),
CultureCode = (SELECT TOP 1 CultureCode FROM fnGetFileContentById (@changeListId, Id, @autoRevert,@cultureCode,@defaultCultureCode)),
FolderPath=(SELECT TOP 1 FullPath FROM Folder WHERE Id= FolderId)
関数スクリプト
FUNCTION [dbo].[fnGetFileContentById]
(
@changeListId UNIQUEIDENTIFIER,
@fileId UNIQUEIDENTIFIER,
@autoRevert BIT,
@cultureCode VARCHAR(16),
@defaultCultureCode VARCHAR(16)
)
RETURNS @fileContent TABLE
(
Id UNIQUEIDENTIFIER PRIMARY KEY NOT NULL,
FileId UNIQUEIDENTIFIER NOT NULL,
Content VARBINARY(MAX) NOT NULL,
[Version] INT NOT NULL,
ChangeListId UNIQUEIDENTIFIER,
FileTypeId INT NOT NULL ,
CultureCode VARCHAR(16)
)
CultureCode を更新するために fnGetFileContentById 関数を再実行したくありません。fnGetGileContentById の 1 回の実行でこのステートメントを記述するにはどうすればよいですか?