在一个脚本中创建SQL Server表和存储过程?

时间:2012-01-06 09:23:03

标签: sql sql-server stored-procedures sql-scripts

我有一个SQL脚本,它正在设置两个数据库表及其键和约束,没有任何问题。我不会包含整个代码,但它的“骨架”看起来像这样:

 BEGIN
CREATE TABLE [table] (

)

CREATE TABLE [table2] (

)

ALTER TABLE table...

ALTER TABLE table2....


END

我很难尝试将存储过程添加到此脚本中,理想情况下我希望将所有内容都包含在同一个脚本中。有人可以告诉我如何将以下存储过程包含在上面的脚本中吗?

CREATE PROCEDURE Test
    @x int
AS
BEGIN
    SELECT COUNT(*)
    FROM table
END
GO

我已经尝试将其放在脚本的末尾,并且尝试使用和不使用BEGIN,END和GO标记,但我一直收到错误,指出“PROCEDURE附近的语法不正确”。

2 个答案:

答案 0 :(得分:5)

试试这样:

USE BDNAME
GO

 BEGIN
CREATE TABLE [table] (

)

CREATE TABLE [table2] (

)

ALTER TABLE table...

ALTER TABLE table2....


END


USE BDNAME
GO

CREATE PROCEDURE Test
    @x int
AS
BEGIN
    SELECT COUNT(*)
    FROM table
END

GO

答案 1 :(得分:3)

不要使用BEGIN END,而是在诸如Create,Alter之类的所有语句之间放置GO。另外我想告诉大家,GO会在你的脚本中创建块,所以如果你在一个块中创建一些局部变量,那么在另一个块中就无法访问它。

 CREATE Table Table1(
     --Your Code
 )

 GO

 CREATE PROCEDURE Test
      @x int
 AS
 BEGIN
     SELECT COUNT(*)
     FROM Table1
 END

 GO

 --Continue your script

希望这有帮助。