Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.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/7/sql-server/27.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_Tsql - Fatal编程技术网

在SQL中声明多个变量

在SQL中声明多个变量,sql,sql-server,tsql,Sql,Sql Server,Tsql,我是SQL新手,正在尝试确定如何将变量设置为a或B。 声明如下: DECLARE @Planner AS VARCHAR(50) = '2566927' OR @Planner = '12201704' 我收到的错误是: 执行SQL查询期间发生以下错误: 关键字“或”附近的语法不正确 以下是一个更完整的示例: DECLARE @Planner AS VARCHAR(50) = '2566927' --Temp Table for Final CREATE TABLE #PP1( Part

我是SQL新手,正在尝试确定如何将变量设置为a或B。
声明如下:

DECLARE @Planner AS VARCHAR(50) = '2566927' OR @Planner = '12201704'
我收到的错误是:

执行SQL查询期间发生以下错误:
关键字“或”附近的语法不正确

以下是一个更完整的示例:

DECLARE
@Planner AS VARCHAR(50) = '2566927'

--Temp Table for Final
CREATE TABLE #PP1(
  Part_Key varChar(50)
  ,Part_No varChar(50)
  ,Part_Name varChar(50)
  ,CurInv DECIMAL(10,2)
  ,MinInv DECIMAL(10,2)
  ,Past_Due DECIMAL(10,2)
  ,Week2 DECIMAL(10,2)
  ,Week4 DECIMAL(10,2)
  ,Week8 DECIMAL(10,2)
  ,Week12 DECIMAL(10,2)
  ,Plus12 DECIMAL(10,2)
  ,Dep26w DECIMAL(10,1)
  ,Stock DECIMAL(10,1)
  ,StockPur DECIMAL (10,1)
  )

--Temp Table to Limit Parts
CREATE TABLE #MRP_Parts(
  MRP_PK varChar(50)
  ,MRP_PN varChar(50)
  ,MRP_PNAME varChar(50)
  )

--Insert into Temp Part Table
INSERT #MRP_Parts

SELECT

PP.Part_Key
,PP.Part_No
,PP.Name

FROM Part_v_Part AS PP
WHERE (PP.Planner = @Planner OR @Planner = '')

--BEGIN Temp Table for Inventory
CREATE TABLE #CurrInv(
  CI_Part_Key varChar(50)
  ,CI_Part_No varChar(50)
  ,CI_Qty DECIMAL(10,1)
  ,CI_Min DECIMAL(10,2)
  )

INSERT #CurrInv

SELECT

PP.PArt_Key
,PP.Part_No
,ISNULL(PC1.Quantity,0)
,PP.Minimum_Inventory_Quantity

FROM Part_v_Part AS PP
OUTER APPLY
(
  SELECT
    SUM(PC.Quantity) AS Quantity
  FROM Part_v_Container as PC
  WHERE PP.part_Key=PC.part_Key
    AND (PC.Container_Status = 'OK' 
      OR PC.Container_Status = 'Receiving'
      OR PC.Container_Status = 'Testing Hold')
    AND PC.Active = '1'
    AND (PP.Planner = @Planner OR @Planner = '')
) AS PC1

我希望@Planner是A或B,第二个变量必须有不同的名称。例如

DECLARE  @Planner1 VARCHAR(50) = '2566927',
         @Planner2 varchar(10) = '12201704',
         @OtherVar int = 42

并用逗号分隔每个变量声明,

您不能这样做,但可以将一个变量声明为一个表,并将多个值放入表中

DECLARE @Planner AS TABLE (P VARCHAR(50))
INSERT @Planner SELECT '2566927' 
INSERT @Planner SELECT '12201704'
然后可以在
where in
type子句中使用table变量

SELECT
    PP.Part_Key
    ,PP.Part_No
    ,PP.Name
FROM Part_v_Part AS PP
WHERE PP.Planner IN (SELECT P FROM @Planner)

你不能这样做。请以不同的方式提问您使用的是哪种dbms?您不能将变量设置为“a或B”:它必须有一个值。请编辑并解释您想要做什么。变量包含一个值。一个值。你想干什么?@user9324484下定决心吧。为什么一个变量有两个值??您如何知道要分配哪个值???这根本没有道理。