使用函数返回值参数 ADO.NET 调用存储过程
Call a stored procedure with a function returned value parameter ADO.NET
我有这个 UDF,它采用从 GUI 收集的一些参数。
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 作为参数(函数的 return 类型)
@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 return 值作为参数。如果可能的话,我应该将函数的 return 值存储到变量中,还是直接向 SP 提供 UDF 作为参数???
您无法发送 udf。是 sql,不是 c#。
但是您可以直接从存储过程发送 udf 的名称和它应该获取的参数 运行 。
但是,在这种情况下,您可以一起跳过 udf,只将参数发送到存储过程。
我有这个 UDF,它采用从 GUI 收集的一些参数。
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 作为参数(函数的 return 类型)
@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 return 值作为参数。如果可能的话,我应该将函数的 return 值存储到变量中,还是直接向 SP 提供 UDF 作为参数???
您无法发送 udf。是 sql,不是 c#。
但是您可以直接从存储过程发送 udf 的名称和它应该获取的参数 运行 。
但是,在这种情况下,您可以一起跳过 udf,只将参数发送到存储过程。