Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在列TSQL上调用存储过程_Tsql_Exec_Procedure - Fatal编程技术网

在列TSQL上调用存储过程

在列TSQL上调用存储过程,tsql,exec,procedure,Tsql,Exec,Procedure,这是我的情况。我知道一定有一个简单的答案,但我只是不太精通TSQL,不知道如何使用。下面是一个选择所需数据的存储过程的主查询。到目前为止,我还可以使用它,只是我需要调用一个名为GetRecordMediaById的单独存储过程,在这里我从PhotoId列向它提供Id,它从适当的数据库中选择BLOB数据,然后需要在最终查询中将其作为自己的列,或者替换原始PhotoId列 我不知道该怎么做。我尝试过实现临时表,但我甚至无法让它执行 这是我的密码: ALTER PROCEDURE [dbo].[Get

这是我的情况。我知道一定有一个简单的答案,但我只是不太精通TSQL,不知道如何使用。下面是一个选择所需数据的存储过程的主查询。到目前为止,我还可以使用它,只是我需要调用一个名为GetRecordMediaById的单独存储过程,在这里我从PhotoId列向它提供Id,它从适当的数据库中选择BLOB数据,然后需要在最终查询中将其作为自己的列,或者替换原始PhotoId列

我不知道该怎么做。我尝试过实现临时表,但我甚至无法让它执行

这是我的密码:

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