我可以在一个存储过程中运行两个查询吗?
CREATE PROCEDURE AddProd
@Store_Name varchar(50),
@Price int,
@Prod_Name varchar(50),
@Qty int,
@ProductDescription varchar(50),
@RatingSum int,
@RatingCount int,
@ProductImage varchar(50),
@Prod_Date date,
AS
BEGIN
SELECT S.Store_ID
FROM Store S
WHERE StoreName=@StoreName
INSERT INTO Product (Store_ID, Price, Prod_Name, Qty, ProductDescription, RatingSum, RatingCount, ProductImage, Prod_Date)
VALUES (S.Store_ID, @Price, @Prod_Name, @Qty, @ProductDescrpition, @RatingSum, @RatingCount, @ProductImage, @Prod_Date)
END
GO对于上面的代码,我希望通过将用户给出的STORE_ID作为参数提供给它来检索STORE_NAME。
我想在INSERT语句中使用这个STORE_ID。
我能这么做吗?!
也就是说,第一个查询返回的值是否与我在“S.store_ID”中使用的值相同?
发布于 2015-01-05 07:36:21
从技术上讲,您可以在单个查询中完成此操作:
INSERT INTO Product
(Store_ID, Price, Prod_Name, Qty, ProductDescription, RatingSum, RatingCount, ProductImage, Prod_Date)
SELECT S.Store_ID, @Price,@Prod_Name,@Qty,@ProductDescription,@RatingSum,@RatingCount,@ProductImage,@Prod_Date
FROM Store S
WHERE StoreName=@StoreName我手头没有要检查的测试数据,但您可能需要为该查询的select子句中的每一列指定适当的名称,而不仅仅是变量名称。唯一不起作用的另一个原因是,如果您还想从存储过程中返回选定的storeID,但即使在这种情况下,您也可以只添加一个OUTPUT子句:
INSERT INTO Product
(Store_ID, Price, Prod_Name, Qty, ProductDescription, RatingSum, RatingCount, ProductImage, Prod_Date)
OUTPUT S.Store_ID
SELECT S.Store_ID, @Price,@Prod_Name,@Qty,@ProductDescription,@RatingSum,@RatingCount,@ProductImage,@Prod_Date
FROM Store S
WHERE StoreName=@StoreName但是对于标题问题,答案是肯定的;您可以在单个存储过程中执行多个语句。
发布于 2015-01-05 07:27:36
除非您想从sp返回storeID,否则请删除该查询并将其放入插入语句中
INSERT INTO Product (Store_ID,Price,Prod_Name,Qty,ProductDescription,RatingSum,RatingCount,ProductImage,Prod_Date)
values (
(SELECT S.Store_ID FROM Store S WHERE StoreName=@StoreName),
@Price,@Prod_Name,@Qty,@ProductDescrpition,@RatingSum,@RatingCount,@ProductImage,@Prod_Date)发布于 2015-01-05 17:26:01
如果每个商店名称的StoreID都是唯一的,则可以将其存储在变量中并在插入时使用
CREATE PROCEDURE AddProd
@Store_Name varchar(50),
@Price int,
@Prod_Name varchar(50),
@Qty int,
@ProductDescription varchar(50),
@RatingSum int,
@RatingCount int,
@ProductImage varchar(50),
@Prod_Date date,
AS
BEGIN
DECLARE @StoreID [DataType]
SELECT @StoreID = S.Store_ID
FROM Store S
WHERE StoreName=@StoreName
INSERT INTO Product (Store_ID,Price,Prod_Name,Qty,ProductDescription,RatingSum,RatingCount,ProductImage,Prod_Date)
values (@StoreID,@Price,@Prod_Name,@Qty,@ProductDescrpition,@RatingSum,@RatingCount,@ProductImage,@Prod_Date)
END
GO在任何场景中,您都可以使用以下内容
CREATE PROCEDURE AddProd
@Store_Name varchar(50),
@Price int,
@Prod_Name varchar(50),
@Qty int,
@ProductDescription varchar(50),
@RatingSum int,
@RatingCount int,
@ProductImage varchar(50),
@Prod_Date date,
AS
BEGIN
INSERT INTO Product (Store_ID,
Price,
Prod_Name,
Qty,
ProductDescription,
RatingSum,
RatingCount,
ProductImage,
Prod_Date
)
SELECT
S.Store_ID
@StoreID,
@Price,
@Prod_Name,
@Qty,
@ProductDescrpition,
@RatingSum,
@RatingCount,
@ProductImage,
@Prod_Date
FROM Store S
WHERE StoreName=@StoreName
END
GOhttps://stackoverflow.com/questions/27771462
复制相似问题