我有一个程序,我将在下面写。现在我想添加两个选择。
首先,SELECT ID FROM Category Where CategoryName = ''
将其保存在变量@CategoryID
中。
第二个选择语句:SELECT ID FROM Type WHERE TypeName = ''
并将其保存在@TypeID
。
现在我想添加第二个插页:
INSERT INTO Inventory(ProductID, InputQuantity, Margin, InputDateTime, ExpDate)
VALUES(@ProductID, @Quantity,@Margin, @InputDateTime, @ExpDate)
where ProductID = Scope_Identity()
谢谢:)
这是我的程序:
USE [AcidDB]
GO
/****** Object: StoredProcedure [dbo].[InsertProducts] Script Date: 03/24/2011 15:29:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROC [dbo].[InsertProducts]
@CategoryID int,
@TypeID int,
@BarCode NvarChar(MAX),
@ArtNumber NvarChar(MAX),
@ProductName NvarChar(MAX),
@Price Decimal(18, 2),
@SelfPrice Decimal(18, 2),
@PriceWithOutAWD Decimal(18, 2),
@UnitsInStock int,
@Comment NvarChar(MAX)
AS
INSERT INTO Products(CategoryID, TypeID, BarCode, ArtNumber, ProductName, Price, SelfPrice, PriceWithOutAWD, UnitsInStock, Comment)
VALUES(@CategoryID, @TypeID, @BarCode, @ArtNumber, @ProductName, @Price, @SelfPrice, @PriceWithOutAWD, @UnitsInStock, @Comment)
Exec InsertProducts '','','','','','','','','',''
Select SCOPE_IDENTITY()
答案 0 :(得分:3)
你不能在插页上有位置:
INSERT INTO Inventory(ProductID, InputQuantity, Margin, InputDateTime, ExpDate)
VALUES(@ProductID, @Quantity,@Margin, @InputDateTime, @ExpDate)
where ProductID = Scope_Identity()
将数据插入Product表后,将新的ProductId放入变量:
@ProductId = Scope_Identity()
然后,在插入中使用此变量:
INSERT INTO Inventory(ProductID, InputQuantity, Margin, InputDateTime, ExpDate)
VALUES(@ProductID, @Quantity,@Margin, @InputDateTime, @ExpDate)
答案 1 :(得分:1)
假设您的修改过程将传递categoryname和typename,那么我认为以下是您想要的。无需从Category和Type表中单独选择 - 只需将其作为第一个插入查询的一部分。
ALTER PROC [dbo].[InsertProducts]
@CategoryName nvarchar(max),
@TypeName nvarchar(max),
@BarCode NvarChar(MAX),
@ArtNumber NvarChar(MAX),
@ProductName NvarChar(MAX),
@Price Decimal(18, 2),
@SelfPrice Decimal(18, 2),
@PriceWithOutAWD Decimal(18, 2),
@UnitsInStock int,
@Comment NvarChar(MAX),
@Quantity int,
@Margin decimal(14,2),
@InputDateTime datetime,
@ExpDate datetime
AS
declare @ProductID int
INSERT INTO Products(CategoryID, TypeID, BarCode, ArtNumber, ProductName, Price, SelfPrice, PriceWithOutAWD, UnitsInStock, Comment)
select c.CategoryID, t.TypeID, @BarCode, @ArtNumber, @ProductName, @Price, @SelfPrice, @PriceWithOutAWD, @UnitsInStock, @Comment
from Category c cross join Type t
where c.CategoryName = @CategoryName and
t.TypeName = @TypeName
set @ProductID = SCOPE_IDENTITY()
INSERT INTO Inventory(ProductID, InputQuantity, Margin, InputDateTime, ExpDate)
VALUES(@ProductID, @Quantity,@Margin, @InputDateTime, @ExpDate)
顺便说一下 - 你真的希望有人把罗密欧与朱丽叶的整个剧本作为产品名称吗? nvarchar(max)
有它的位置,但它不应该盲目地用来避免考虑你的数据库中你想要允许的内容。
答案 2 :(得分:0)