Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.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 server sp内包含值SQL server 2008的select语句_Sql Server_Variables_Select_Stored Procedures - Fatal编程技术网

Sql server sp内包含值SQL server 2008的select语句

Sql server sp内包含值SQL server 2008的select语句,sql-server,variables,select,stored-procedures,Sql Server,Variables,Select,Stored Procedures,我有一个简单的问题,我相信解决方案就在我眼皮底下,但仍然无法解决 我有一个存储过程,希望用户输入2个输入: @userid int, @subtotal int 我的存储过程还需要表中的值,该值可以从以下查询中获得: SELECT discountid FROM historical WHERE userid = @userid 所以,我只需要将从这个查询中获得的值(一个int)保存到一个变量中,我将在整个存储过程中使用它,这样我就可以调用它并在以后使用它 问题是我不知道如何声明一个变量来保

我有一个简单的问题,我相信解决方案就在我眼皮底下,但仍然无法解决

我有一个存储过程,希望用户输入2个输入:

@userid int,
@subtotal int
我的存储过程还需要表中的值,该值可以从以下查询中获得:

SELECT discountid FROM historical WHERE userid = @userid
所以,我只需要将从这个查询中获得的值(一个int)保存到一个变量中,我将在整个存储过程中使用它,这样我就可以调用它并在以后使用它

问题是我不知道如何声明一个变量来保存这个查询中的值,以便以后使用

我搜索并发现了如下内容:

@userid int,
@subtotal int,
@discountid int = (SELECT discountid from historical where userid = @userid)
而且

@userid int,
@subtotal int,
SELECT @discountid = discountid from historical
where userid = @userid;

……但它们似乎都不起作用。我目前正在使用SQLServer2008。希望有人能帮我一点忙,抱歉我的英语不是母语,提前谢谢

首先必须
声明该变量,然后将其赋值。还要确保查询只返回一行,否则一旦无法将N行分配给一个INT变量,就会出现错误。为了防止这种情况,我在select语句中添加了
TOP1

CREATE PROCEDURE YOUR NAME
@userid int,
@subtotal int

AS

Declare @discountid int;
SELECT TOP 1 @discountid = discountid from historicalwhere userid = @userid;
.....

对我相信这就是我一直在寻找的。我在sp的第一部分声明了我的变量,这样用户就可以插入他自己的变量值,这是我不想要的。我必须在“AS”之后加入它,这是我的错误。让我再检查一下是否一切正常,过一会儿我再来。谢谢