Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有两个输入参数的Sql过程_Sql_Sql Server - Fatal编程技术网

具有两个输入参数的Sql过程

具有两个输入参数的Sql过程,sql,sql-server,Sql,Sql Server,我需要创建一个SQL存储过程,该过程将采用两个输入参数(表'users'的id和表'sales'的id),然后如果列'Couples'(表'users')的值大于0,它将增加列'numOfSales'(表'sales')中1的值,并减少列'Couples'中1的值。 我试过这个: CREATE PROCEDURE usp_makesale @id_sales int NOT NULL, @id_users int NOT NULL AS BEGIN SET NOCOUNT ON; SELE

我需要创建一个SQL存储过程,该过程将采用两个输入参数(表'users'的id和表'sales'的id),然后如果列'Couples'(表'users')的值大于0,它将增加列'numOfSales'(表'sales')中1的值,并减少列'Couples'中1的值。 我试过这个:

CREATE PROCEDURE usp_makesale
@id_sales int NOT NULL,
@id_users int NOT NULL
AS
 BEGIN
 SET NOCOUNT ON;
 SELECT users.coupons, sales.numOfSales
IF (coupons > 0)
  BEGIN
  SET coupons - 1;
  SET numOfSales + 1;
  END

如何正确声明这些变量?

您应该这样声明变量:

DECLARE @coupons AS INT
SELECT @coupons = coupons FROM users WHERE users.id = @id_users

DECLARE @numOfSales AS INT
SELECT @numOfSales = numOfSales FROM sales WHERE sales.id = @id_sales
但是,您还没有正确编写update语句来更新列中的值。您需要类似以下内容:

UPDATE users
SET coupons = coupons - 1
WHERE users.id = @id_users

UPDATE sales
SET numOfSales = numOfSales + 1
WHERE sales .id = @id_sales

去掉参数声明中的“NOT NULL”部分。答案有帮助吗?当我试图解析它时,给出错误“关键字“SELECT”附近的语法不正确”。SELECT在“=”之后。我已从变量设置中删除了不正确的语法,请查看我编辑的答案。要从表中设置变量,正确的语法是
SELECT@[variablename]=[field]from[table]