2015-05-12 136 views
0

我有這個UDF,它需要從GUI中收集一些參數。用函數返回值參數調用存儲過程ADO.NET

CREATE FUNCTION [dbo].[fnCreateAppoitmentXML] (@PacientID int 
, @DataProgramare datetime2(7) 
, @PacientNume varchar(50) 
, @PacientEmail varchar(100) 
, @PacientTelefon varchar(50) 
, @PacientSimptome varchar(100)) 
RETURNS xml 

AS 
BEGIN 


    RETURN (SELECT (SELECT 
     @PacientId AS PacientId, 
     @DataProgramare AS DataProgramare, 
     @PacientNume AS PacientNume, 
     @PacientEmail AS PacientEmail, 
     @PacientTelefon AS PacientTelefon, 
     @PacientSimptome AS PacientSimptome 
    FOR 
    xml PATH ('PacientDate'), 
    TYPE) 
    FOR xml PATH (''), 
    ROOT ('root')) 
END 

從MVC 5項目,我需要下面的SP,其採用XML作爲參數(函數的返回類型)

@xmldoc xml 
AS 
BEGIN 
    BEGIN TRANSACTION 
    BEGIN TRY 
     INSERT INTO [dbo].[ProgramareMF] (PacientID, DataProgramare, PacientNume, PacientEmail, PacientTelefon, PacientSimptome) 
     (SELECT 
      xmldoc.i.value('./PacientId[1]', 'int'), 
      xmldoc.i.value('./DataProgramare[1]', 'datetime2(7)'), 
      xmldoc.i.value('./PacientNume[1]', 'varchar(100)'), 
      xmldoc.i.value('./PacientEmail[1]', 'varchar(100)'), 
      xmldoc.i.value('./PacientTelefon[1]', 'varchar(100)'), 
      xmldoc.i.value('./PacientSimptome[1]', 'varchar(100)') 
     FROM @xmldoc.nodes('/root/PacientDate') AS xmldoc (i)) 
    COMMIT TRAN; 
    END TRY 
    BEGIN CATCH 
    IF @@TRANCOUNT > 0 
     ROLLBACK TRAN; 
    THROW; 
    END CATCH; 
END 

我的第一個問題是,我可以在.NET跑了SP調用並以UDF返回值作爲參數提供給它。如果這是可能的,我應該將函數的返回值存儲到一個變量中,或者直接提供帶有UDF的SP作爲參數?

回答

1

你不能發送udf。這是SQL,而不是C#。
但是你可以發送udf的名字和它應該得到的參數,並直接從存儲過程運行它。 但是,在這種情況下,您可以一起跳過udf,只需將參數發送到存儲過程即可。

+0

我需要使用XML,這些是規格...將做一些頭腦風暴,並附帶一些信息,謝謝 –

相關問題