我正在尝试创建一个存储过程,以将新记录插入INVOICE
表中
详细信息是:
当有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'
感谢您的帮助!
答案 0 :(得分:2)
首先-您需要为存储过程创建参数-而不是内部变量。
第二,我会强烈建议为每个参数使用最合适的数据类型-而不仅仅是为所有参数使用VARCHAR(50)
。您表格的列的类型为INT
和DATETIME
-使用这些类型作为参数!
第三,我建议始终明确指定要插入目标表的列。
总而言之,请尝试以下代码:
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';