复杂类型对存储过程无结果

亚尼夫·埃利亚夫(Yaniv Eliav)

我有一个存储过程,我想在Web API(C#)中使用它的结果。我必须错过一些东西,因为我没有结果Complex Types(在EF模型中),也没有Functions Imports(我可以在其中看到存储过程,Functions Imports但是它没有返回任何值,正如预期的那样)。

这是我的存储过程(为了缩短时间,我已经删除了一些不重要的数据)

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


    @main_id BIGINT, 
    @id_ze_mish BIGINT, 
    @id_nof BIGINT, 
    @loggedInUser VARCHAR(20) 
AS
BEGIN
    SET NOCOUNT ON;
BEGIN TRY
BEGIN TRANSACTION [TransactionUniteSingles]

OPEN SYMMETRIC KEY io_key DECRYPTION BY CERTIFICATE chn_cert

    -- Step 1
    UPDATE [dbo].[t1]
    SET deleted = 1,
    WHERE id_nof = @id_nof
      AND id_ze  = @id_ze_mish

    -- Step 2
    UPDATE [dbo].[t_no_nir]
    SET update_stamp = GETDATE(),
        [user_name] = @loggedInUser
    WHERE id_nof = @id_nof
      AND ms_zehut_mazmin  = @id_ze_mish 

    -- Step 3
    CREATE TABLE #mainPrice
    (
         id INT,
         fName VARCHAR(20),
         lName VARCHAR(20)
    )

    INSERT INTO #mainPrice 
        EXEC  [dbo].[io_sp_get_some_data_foo] @id

    IF(EXISTS(select * from #mainPrice))
    BEGIN
        DECLARE @totalAmount INT;

        SELECT @totalAmount = (main_price + price_tip + price_visa) 
        FROM #mainPrice

        DROP TABLE #mainPrice

        UPDATE [dbo].[t_4] 
        SET amount = @totalAmount,
            update_stamp = GETDATE(),
            [user_name] = @loggedInUser
        WHERE id_nof = @id_nof
          AND id  = @main_id

    CLOSE ALL SYMMETRIC KEYS

    COMMIT TRANSACTION [TransactionUniteSingles]      
    SELECT CAST(1 as BIT) as 'Status', 'Succeeded' as 'ReturnMessage'
    END
ELSE
    BEGIN
    SELECT CAST(0 as BIT) as 'Status', 'ADMIN - Unite Singles as 'ReturnMessage'       
    END 
END TRY

BEGIN CATCH
ROLLBACK TRANSACTION [TransactionUniteSingles]
SELECT CAST(0 as BIT) as 'Status', 'ADMIN - Unite Singles' as 'ReturnMessage'       
END CATCH

END

请注意-以独立方式运行存储过程时,它可以完美运行并返回预期的结果。

亚尼夫·埃利亚夫(Yaniv Eliav)

我发现我的问题出在我的临时表上。SET FMTONLY OFFSP的顶部或临时表上方(#mainPrice以我的情况为例)使用时,所有内容都像吊饰一样工作,突然间Complex Types显示了SP。

另一种解决方案是使用变量表:DECLARE TABLE @mainPrice两者都在工作。

我很高兴知道为什么会发生这种情况,以及为什么C#拒绝将临时表作为我的SP的一部分,但此刻我找到了所需的解决方案。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章