簡體   English   中英

如何編寫存儲過程查詢

[英]How to write the stored procedure query

我正在嘗試創建一個存儲過程,以將新記錄插入到INVOICE表中

詳細信息是:

  • 發票(INV_NUMBER [PK,整數],CUS_CODE [FK,整數],INV_DATE [日期/時間])
  • 客戶(CUS_CODE [PK],LNAME,FNAME,INITIAL,AREACODE,PHONE,BALANCE)

當有FK和int列時,如何編寫存儲過程查詢以在INVOICE插入新行?

這是我所做的,但不正確:

CREATE PROC spNewCustomer_INVOICE
AS
BEGIN
    DECLARE @INV_NUMBER VARCHAR(50);
    DECLARE @CUS_CODE VARCHAR(50);
    DECLARE @INV_DATE VARCHAR(50);
AS 
    INSERT INTO INVOICE
    VALUES (@INV_NUMBER, @CUS_CODE, @INV_DATE)

調用它:

EXEC spNewCustomer_INVOICE '2018', '20018', '2018-08-17'

謝謝你的幫助!

首先-您需要為存儲過程創建參數 -而不是內部變量。

其次,我強烈建議為每個參數使用最合適的數據類型 -而不是所有參數都使用VARCHAR(50) 表的列的類型為INTDATETIME 使用這些類型的參數!

第三,我建議始終明確指定要插入的目標表的列。

總而言之,請嘗試以下代碼:

CREATE PROCEDURE NewCustomerInvoice
    @INV_NUMBER INT,
    @CUS_CODE INT,
    @INV_DATE DATETIME
AS
BEGIN
    INSERT INTO INVOICE (INV_NUMBER, CUS_CODE, INV_DATE)
    VALUES (@INV_NUMBER, @CUS_CODE, @INV_DATE);
END;

然后使用以下命令調用此過程:

EXEC NewCustomerInvoice 
         @INV_NUMBER = 2018, 
         @CUS_CODE = 20018, 
         @INV_DATE = '20180817';

暫無
暫無

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

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