【问题标题】:Pass datatable as paramater in stored procedure在存储过程中将数据表作为参数传递
【发布时间】:2015-07-08 09:11:59
【问题描述】:

是否可以将数据表作为参数传递给存储过程? 所以,像

exec MyStoredProcedure @MyDataTable

我使用的是 SQL SERVER 2008。

【问题讨论】:

标签: sql-server sql-server-2008


【解决方案1】:

您需要先创建自定义表格类型。

-- Create the data type
CREATE TYPE udtt_Table AS TABLE 
(
    Column1     int, 
    Column2     varchar(10), 
    Column3     datetime
)
GO

您可以在存储过程中使用用户定义的表类型,如下所示,

CREATE PROCEDURE usp_User
(
    @UserTable  udtt_Table READONLY
)
...
....

【讨论】:

    【解决方案2】:

    您可以创建自己的类型:https://msdn.microsoft.com/en-us/library/ms175007.aspx

    但这是一项艰巨的工作......你到底想达到什么目标?

    编辑:另一个建议 使用 XML 参数(参见下面的 cmets)

    【讨论】:

    • 我需要将一个包含数据的表传递给存储过程。我将在存储过程中处理该数据。
    • 最好的(至少对我来说)是将数据作为 XML 传递。您可以使用 SELECT [..] FOR XML [...] 轻松创建内容。您的 SP 或 UDF 可以声明 XML 类型的参数。就是这样......唯一的挑战是在您不习惯时查询 XML 的字段:-)(如果有帮助,请投票,谢谢)
    • C#程序中的函数会向datatable插入数据,所以参数必须是datatable。我正在编辑数据库,我的朋友正在处理应用程序部分,这是他们的需求。
    • 在我的工作中,通常的做法是将数据作为 XML(作为字符串)传递到 SQL-SP 和/或 SQL-UDF。如果您从 C# 执行此操作(假设您谈论 System.Data.DataTable),您可以查看 WriteXml-Method。 HTH
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-01
    • 1970-01-01
    • 2017-07-15
    • 1970-01-01
    • 2010-10-19
    • 1970-01-01
    相关资源
    最近更新 更多