簡體   English   中英

使用不帶參數的存儲過程將值插入表中

[英]Insert values into a table using stored procedure without parameters

我想編寫一個存儲過程,通過連接兩個表在一個表中插入數據。 以下是我的嘗試,但出現錯誤。

CREATE PROCEDURE [dbo].[stored_proc1] 
AS
BEGIN 
    INSERT INTO [dbo].[IN_TABLE]
        SELECT 
            l.col1, l.col2, l.col3, l.col4,
            r.col1, r.col2
        FROM 
            db2.dbo.table1 AS l
        LEFT JOIN 
            dbo.[table2] AS r ON l.col1 = r.col2
        WHERE 
            l.col4 >= DATEADD(dd, DATEDIFF(dd, 0, GETDATE()), -7);

    DELETE FROM dbo.[IN_TABLE] 
    WHERE col4 < DATEADD(dd, DATEDIFF(dd, 0, GETDATE()),-7);
END
GO

這是我得到的錯誤:

消息213,級別16,狀態1,過程store_proc1,第18行[批處理開始第9行]
列名或提供的值數與表定義不匹配。

我在搜索任務解決方案時遇到的所有示例都使用參數,並通過將它們設置為特定值來插入它們,這對我沒有幫助,因為我想從SELECT語句中插入。

非常感謝您的幫助。 先感謝您。

您需要指定要插入的列。 不知道您在In_Table中的字段列表無法發布確切的代碼,但這是您需要的

        INSERT INTO [dbo].[IN_TABLE] (
    col1, col2, col3, etc  (this lists needs to match your list of fields in your select
    )
SELECT l.col1
          ,l.col2
          ,l.col3
          ,l.col4 
          ,r.col1
          ,r.col2
FROM db2.dbo.table1 AS l
LEFT JOIN dbo.[table2] AS r
        ON l.col1= r.col2
WHERE l.col4 >= DATEADD(dd, DATEDIFF(dd, 0, GETDATE()),-7);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM