尝试创建过程时SQL语法不正确

尝试创建过程时SQL语法不正确,sql,sql-server,Sql,Sql Server,尝试在SQL Server中执行时,我不断遇到错误: Msg 156,第15级,状态1,程序sql\u chp4a\u premiere\u assign,第5行 关键字“SELECT”附近的语法不正确 我假设它指的是第一个SELECT。我还不太熟悉SQL(由于可怕的风暴和春假,我有一段时间没有上过课),所以我可能忽略了一些愚蠢的事情 USE [school username that gives out my name) CREATE PROCEDURE sql_chp4a_premiere

尝试在SQL Server中执行时,我不断遇到错误:

Msg 156,第15级,状态1,程序sql\u chp4a\u premiere\u assign,第5行
关键字“SELECT”附近的语法不正确

我假设它指的是第一个
SELECT
。我还不太熟悉SQL(由于可怕的风暴和春假,我有一段时间没有上过课),所以我可能忽略了一些愚蠢的事情

USE [school username that gives out my name)

CREATE PROCEDURE sql_chp4a_premiere_assign

SELECT PART_NUM,DESCRIPTION,PRICE 
FROM PART;

SELECT *
FROM ORDERS

SELECT CUSTOMER_NAME 
FROM customer 
WHERE CREDIT_LIMIT>=10000;

SELECT ORDER_NUM
FROM ORDERS
WHERE CUSTOMER_NUM = '608'
AND ORDER_DATE = '2010-10-23';

SELECT CUSTOMER_NUM,CUSTOMER_NAME 
FROM CUSTOMER 
WHERE REP_NUM=35 OR REP_NUM=65;

SELECT PART_NUM,DESCRIPTION 
FROM PART WHERE CLASS!='AP';

SELECT PART_NUM,DESCRIPTION,ON_HAND 
FROM PART 
WHERE ON_HAND BETWEEN 10 AND 25;

SELECT PART_NUM,DESCRIPTION,ON_HAND 
FROM PART 
WHERE ON_HAND>=10 AND ON_HAND<=25;

SELECT PART_NUM,DESCRIPTION,(ON_HAND * PRICE) 
AS "ON_HAND_VALUE" 
FROM PART WHERE CLASS='SG';

SELECT PART_NUM,DESCRIPTION,(ON_HAND * PRICE) 
AS "ON_HAND_VALUE" 
FROM PART 
WHERE (ON_HAND * PRICE)>7500;

SELECT PART_NUM,DESCRIPTION,(ON_HAND * PRICE) 
AS "ON_HAND_VALUE" 
FROM PART WHERE (ON_HAND * PRICE)>7500;
使用[给出我名字的学校用户名]
创建过程sql\u chp4a\u premiere\u assign
选择零件号、说明、价格
从部分;
挑选*
从命令
选择客户名称
来自客户
其中信用额度>=10000;
选择订单号
从命令
其中CUSTOMER_NUM='608'
订单日期='2010-10-23';
选择客户编号、客户名称
来自客户
其中REP_NUM=35或REP_NUM=65;
选择零件编号、描述
从类所在的部分开始!='AP';
选择手上的零件号、说明
从一部分
在10到25之间;
选择手上的零件号、说明
从一部分
其中手上>=10,手上7500;
选择零件编号、说明(现有*价格)
作为“现有价值”
(现有*价格)>7500的部分;
谢谢,非常感谢您的帮助。

更改此选项:

CREATE PROCEDURE sql_chp4a_premiere_assign
为此:

CREATE PROCEDURE sql_chp4a_premiere_assign AS
第一:

这部分你错了:

USE [school username that gives out my name)
更改为
]

USE [school username that gives out my name]
第二:

存储过程声明中缺少
AS
BEGIN
END
关键字

第三:

您创建了两个存储过程。用
GO

这将有助于:

USE [school username that gives out my name]

go

CREATE PROCEDURE Sql_chp4a_premiere_assign
AS
  BEGIN
      SELECT part_num,
             description,
             price
      FROM   part;

      SELECT *
      FROM   orders

      SELECT customer_name
      FROM   customer
      WHERE  credit_limit >= 10000;

      SELECT order_num
      FROM   orders
      WHERE  customer_num = '608'
             AND order_date = '2010-10-23';

      SELECT customer_num,
             customer_name
      FROM   customer
      WHERE  rep_num = 35
              OR rep_num = 65;

      SELECT part_num,
             description
      FROM   part
      WHERE  class != 'AP';

      SELECT part_num,
             description,
             on_hand
      FROM   part
      WHERE  on_hand BETWEEN 10 AND 25;

      SELECT part_num,
             description,
             on_hand
      FROM   part
      WHERE  on_hand >= 10
             AND on_hand <= 25;

      SELECT part_num,
             description,
             ( on_hand * price ) AS "ON_HAND_VALUE"
      FROM   part
      WHERE  class = 'SG';

      SELECT part_num,
             description,
             ( on_hand * price ) AS "ON_HAND_VALUE"
      FROM   part
      WHERE  ( on_hand * price ) > 7500;

      SELECT part_num,
             description,
             ( on_hand * price ) AS "ON_HAND_VALUE"
      FROM   part
      WHERE  ( on_hand * price ) > 7500;
  END;

go

CREATE PROCEDURE Sql_chp4a_premiere_assign
AS
  BEGIN
      SELECT part_num,
             description,
             price
      FROM   part;

      SELECT *
      FROM   orders

      SELECT customer_name
      FROM   customer
      WHERE  credit_limit >= 10000;

      SELECT order_num
      FROM   orders
      WHERE  customer_num = '608'
             AND order_date = '2010-10-23';

      SELECT customer_num,
             customer_name
      FROM   customer
      WHERE  rep_num = 35
              OR rep_num = 65;

      SELECT part_num,
             description
      FROM   part
      WHERE  class != 'AP';

      SELECT part_num,
             description,
             on_hand
      FROM   part
      WHERE  on_hand BETWEEN 10 AND 25;

      SELECT part_num,
             description,
             on_hand
      FROM   part
      WHERE  on_hand >= 10
             AND on_hand <= 25;

      SELECT part_num,
             description,
             ( on_hand * price ) AS "ON_HAND_VALUE"
      FROM   part
      WHERE  class = 'SG';

      SELECT part_num,
             description,
             ( on_hand * price ) AS "ON_HAND_VALUE"
      FROM   part
      WHERE  ( on_hand * price ) > 7500;

      SELECT part_num,
             description,
             ( on_hand * price ) AS "ON_HAND_VALUE"
      FROM   part
      WHERE  ( on_hand * price ) > 7500;
  END  
使用[给出我名字的学校用户名]
去
创建过程Sql\u chp4a\u premiere\u assign
作为
开始
选择零件号,
描述
价格
从部分;
挑选*
从命令
选择客户名称
来自客户
其中信用额度>=10000;
选择订单号
从命令
其中customer_num='608'
订单日期='2010-10-23';
选择客户编号,
客户名称
来自客户
其中rep_num=35
或rep_num=65;
选择零件号,
描述
从一部分
在哪里上课AP';
选择零件号,
描述
手头
从一部分
在10到25之间;
选择零件号,
描述
手头
从一部分
手上的位置>=10
现有7500人;
选择零件号,
描述
(现有*价格)为“现有价值”
从一部分
其中(现有*价格)>7500;
结束;
去
创建过程Sql\u chp4a\u premiere\u assign
作为
开始
选择零件号,
描述
价格
从部分;
挑选*
从命令
选择客户名称
来自客户
其中信用额度>=10000;
选择订单号
从命令
其中customer_num='608'
订单日期='2010-10-23';
选择客户编号,
客户名称
来自客户
其中rep_num=35
或rep_num=65;
选择零件号,
描述
从一部分
在哪里上课AP';
选择零件号,
描述
手头
从一部分
在10到25之间;
选择零件号,
描述
手头
从一部分
手上的位置>=10
现有7500人;
选择零件号,
描述
(现有*价格)为“现有价值”
从一部分
其中(现有*价格)>7500;
结束
有关存储过程语法,请参阅

无论如何,您可以使用格式化SQL。

试试这个

CREATE PROCEDURE sql_chp4a_premiere_assign
AS 
BEGIN
    SELECT PART_NUM,DESCRIPTION,PRICE 
    FROM PART;

    SELECT *
    FROM ORDERS

    SELECT CUSTOMER_NAME 
    FROM customer 
    WHERE CREDIT_LIMIT>=10000;

    SELECT ORDER_NUM
    FROM ORDERS
    WHERE CUSTOMER_NUM = '608'
    AND ORDER_DATE = '2010-10-23';

    SELECT CUSTOMER_NUM,CUSTOMER_NAME 
    FROM CUSTOMER 
    WHERE REP_NUM=35 OR REP_NUM=65;

    SELECT PART_NUM,DESCRIPTION 
    FROM PART WHERE CLASS!='AP';

    SELECT PART_NUM,DESCRIPTION,ON_HAND 
    FROM PART 
    WHERE ON_HAND BETWEEN 10 AND 25;

    SELECT PART_NUM,DESCRIPTION,ON_HAND 
    FROM PART 
    WHERE ON_HAND>=10 AND ON_HAND<=25;

    SELECT PART_NUM,DESCRIPTION,(ON_HAND * PRICE) 
    AS "ON_HAND_VALUE" 
    FROM PART WHERE CLASS='SG';

    SELECT PART_NUM,DESCRIPTION,(ON_HAND * PRICE) 
    AS "ON_HAND_VALUE" 
    FROM PART 
    WHERE (ON_HAND * PRICE)>7500;

    SELECT PART_NUM,DESCRIPTION,(ON_HAND * PRICE) 
    AS "ON_HAND_VALUE" 
    FROM PART WHERE (ON_HAND * PRICE)>7500;
END
CREATE PROCEDURE sql\u chp4a\u premiere\u assign
作为
开始
选择零件号、说明、价格
从部分;
挑选*
从命令
选择客户名称
来自客户
其中信用额度>=10000;
选择订单号
从命令
其中CUSTOMER_NUM='608'
订单日期='2010-10-23';
选择客户编号、客户名称
来自客户
其中REP_NUM=35或REP_NUM=65;
选择零件编号、描述
从哪里开始上课!='AP';
选择手上的零件号、说明
从一部分
在10到25之间;
选择手上的零件号、说明
从一部分
其中手上>=10,手上7500;
选择零件编号、说明(现有*价格)
作为“现有价值”
(现有*价格)>7500的部分;
结束

错误是因为您缺少
AS
-。第二,存储过程选择了很多,但什么也不做。Michael,这将错误更改为“Msg 111,级别15,状态1,过程sql\u chp4a\u premiere\u assign,第8行'CREATE/ALTER Procedure'必须是查询批处理中的第一条语句。”@user,在USE语句后面加上一个GO。这就给了我“Msg 111,级别15,状态1,过程sql\u chp4a\u premiere\u assign,第8行“创建/更改过程”必须是查询批处理中的第一条语句。“@user2109696:separate
USE
with
创建存储过程
USE
GO
。。我已经编辑了我的答案
,因为它是必需的<代码>开始
结束
不是(尽管它们经常被使用)