在列TSQL上调用存储过程
这是我的情况。我知道一定有一个简单的答案,但我只是不太精通TSQL,不知道如何使用。下面是一个选择所需数据的存储过程的主查询。到目前为止,我还可以使用它,只是我需要调用一个名为GetRecordMediaById的单独存储过程,在这里我从PhotoId列向它提供Id,它从适当的数据库中选择BLOB数据,然后需要在最终查询中将其作为自己的列,或者替换原始PhotoId列 我不知道该怎么做。我尝试过实现临时表,但我甚至无法让它执行 这是我的密码:在列TSQL上调用存储过程,tsql,exec,procedure,Tsql,Exec,Procedure,这是我的情况。我知道一定有一个简单的答案,但我只是不太精通TSQL,不知道如何使用。下面是一个选择所需数据的存储过程的主查询。到目前为止,我还可以使用它,只是我需要调用一个名为GetRecordMediaById的单独存储过程,在这里我从PhotoId列向它提供Id,它从适当的数据库中选择BLOB数据,然后需要在最终查询中将其作为自己的列,或者替换原始PhotoId列 我不知道该怎么做。我尝试过实现临时表,但我甚至无法让它执行 这是我的密码: ALTER PROCEDURE [dbo].[Get
ALTER PROCEDURE [dbo].[GetRollCallData]
@Ids VARCHAR(255),
@LexiconId INT,
@UUID UNIQUEIDENTIFIER,
@ReadOnly INT
AS
DECLARE @TableCode INT
SET @TableCode = 58
EXEC InsertInSelectionCache @Ids, @UUID, @TableCode, 0
WITH DOACTE AS(
SELECT ROW_NUMBER() OVER(PARTITION BY [File].Id ORDER BY CustomRecordsetId DESC) AS RowNumber, [File].*, FileType2Lexicon.Label as FileTypeLabel, [People].DefaultPhone, [People].InvertedName, CustomFieldValue.Value as DateofArrest
FROM FileType2Lexicon, SelectionCache, [People], [File]
INNER JOIN [CustomRecordSet]
ON [CustomRecordset].RecordId = [File].Id
INNER JOIN CustomFieldValue
ON [CustomRecordset].Id = CustomFieldValue.CustomRecordsetId
INNER JOIN [CustomField2Lexicon]
ON CustomField2Lexicon.CustomFieldId = CustomFieldValue.CustomFieldId
WHERE [File].Id = SelectionCache.RecordId
AND SelectionCache.UUID = @UUID
AND SelectionCache.TableCode = @TableCode -- this is the code for File table
AND [File].Id <> 0
AND [File].FileTypeId = FileType2Lexicon.FileTypeId
AND FileType2Lexicon.LexiconId = @LexiconId
AND [File].ClientIdString = [People].ClientIdString
AND CustomFieldValue.Value <> ''
AND CustomField2Lexicon.Label = 'Date of Arrest'),
PHOTOCTE AS(
SELECT [File].Id, CustomFieldValue.Value as PhotoId
FROM FileType2Lexicon, SelectionCache, [People], [File]
INNER JOIN [CustomRecordSet]
ON [CustomRecordset].RecordId = [File].Id
INNER JOIN CustomFieldValue
ON [CustomRecordset].Id = CustomFieldValue.CustomRecordsetId
INNER JOIN [CustomField2Lexicon]
ON CustomField2Lexicon.CustomFieldId = CustomFieldValue.CustomFieldId
WHERE [File].Id = SelectionCache.RecordId
AND SelectionCache.UUID = @UUID
AND SelectionCache.TableCode = @TableCode -- this is the code for File table
AND [File].Id <> 0
AND [File].FileTypeId = FileType2Lexicon.FileTypeId
AND FileType2Lexicon.LexiconId = @LexiconId
AND [File].ClientIdString = [People].ClientIdString
AND CustomFieldValue.Value <> ''
AND CustomField2Lexicon.Label = 'Booking Photo')
SELECT DOACTE.*, PHOTOCTE.PhotoId
FROM DOACTE
INNER JOIN
PHOTOCTE
ON DOACTE.Id = PHOTOCTE.Id
WHERE DOACTE.RowNumber = 1
您可以声明@table_变量,并将“EXEC insertiselectioncache@Ids、@UUID、@TableCode、0”的结果插入到表变量中 然后,您可以在最终查询中加入@table_变量
有关示例,请参见此处:您可以声明@table_变量,并将“EXEC InsertInSelectionCache@Ids、@UUID、@TableCode、0”中的结果插入到表变量中 然后,您可以在最终查询中加入@table_变量
参见此处示例:如果有人知道一种更简单的方法,可以根据另一列的值从列中提取值(这就是我对PhotoId所做的,因为照片的值和逮捕日期都存储在CustomFieldValue.value中),那将是令人惊讶的,因为我需要对10个不同的值执行此操作。刚刚找到了一个解决我之前评论的方法。原始问题仍然是一个问题。找到了原始问题的解决方案。我创建了一个标量函数,该函数在返回BLOB的SELECT语句中运行。如果有人知道更简单的方法,可以根据另一列的值从列中提取值(这就是我对PhotoId所做的,因为照片的值和逮捕日期都存储在CustomFieldValue.value中),那将是令人惊讶的,因为我需要对10个不同的值执行此操作。刚刚找到了一个解决我之前评论的方法。原始问题仍然是一个问题。找到了原始问题的解决方案。我创建了一个标量函数,该函数在SELECT语句中运行,该语句返回BLOB.InsertInSelectionCache,实际将参数解析到名为Selection Cache的数据库表中。我不明白这会有什么帮助。InsertInSelectionCache实际上会将参数解析到名为Selection Cache的数据库表中。我不明白这会有什么帮助。
SELECT DOACTE.*, dbo.GetImagebyId(PHOTOCTE.PhotoId) as Photo,
FROM DOACTE
INNER JOIN
PHOTOCTE
ON DOACTE.Id = PhotoCTE.Id
WHERE DOACTE.RowNumber = 1