【问题标题】:Stored Procedure for insert插入的存储过程
【发布时间】:2015-06-08 12:22:46
【问题描述】:

我在我的存储过程中将datatable 作为参数,我试图在其中一个数据库表中插入它的一些列,但我不知道正确的语法。

这是我尝试过的

ALTER PROCEDURE [dbo].[spInsertInvoice]
    @tblInvoice [TypeExcel] READONLY
AS
BEGIN
    SET NOCOUNT ON;

    INSERT into Invoice(InvoiceNo, InvoiceDate, CustomerName,[Subject], Reference)
    VALUES (SELECT Template, Invoice_No, InvoiceDate, Cust_Name,[Subject], Reference FROM @tblInvoice)
END

请指导我如何在表格中正确插入值。

【问题讨论】:

    标签: sql-server stored-procedures datatable syntax-error sql-insert


    【解决方案1】:

    您需要采用选择而不是值的插入形式:

    insert into theTable (col1, col2, ...)
    select col1, col2, ...
    from ...
    where...
    

    选择的所有功能都可用(列别名、分组、连接、子查询……)。

    【讨论】:

    • 那行不通。使用这种形式的插入仍然不允许您使用变量来指定表名。
    • @Guffa 确实如此。 Data table parameters可以直接用在from子句中。
    • 我明白了,我以为它是一个表名。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多