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

问题描述:

我有一个SQL脚本,用它们的键和约束设置两个数据库表没有任何问题。我将不包括整个代码,但“骨架”它看起来像这样:在一个脚本中创建SQL Server表和存储过程?

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标签,但我不断收到写着“近程序不正确的语法”错误。

+0

你想创建一个SQL脚本?我很困惑于“模式”这个词。 – 2012-01-06 09:27:14

+0

对不起,也许这就是我的意思! SQL新手 – DevDave 2012-01-06 09:29:04

+0

如果在将'GO'添加到脚本时出现错误,则必须有另一个问题。我知道你说剧本很长,但也许你可以发表引起问题的部分?另外,如果您不确定它,请阅读“GO”文档:http://msdn.microsoft.com/en-us/library/ms188037.aspx – Tony 2012-01-06 09:37:31

试试这样说:

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 
+0

您是否意味着在表创建结束时放置GO和存储过程之前?给了一个尝试,并得到'不正确的语法附近GO' – DevDave 2012-01-06 09:33:14

+0

这是为sybase ase,mysql,sql server,什么? – 2012-01-06 09:43:32

+0

我正在使用sql server – DevDave 2012-01-06 09:47:07

使用BEGIN END相反的,把你所有的之类的语句创建,更改之间GO。另外我想告诉你,把GO放在你的脚本中会创建块,所以如果你在一个块中创建了一些局部变量,那么在另一个块中不能访问它。

CREATE Table Table1(
    --Your Code 
) 

GO 

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

GO 

--Continue your script 

希望这会有所帮助。

+0

您的意思是在每个代码块之后放置GO。这样做后,我得到了以下错误:关键字'CREATE'附近的语法不正确。 关键字'ALTER'附近的语法不正确。 'GO'附近语法不正确。 'GO'附近语法不正确。 'CREATE/ALTER PROCEDURE'必须是查询批处理中的第一条语句。 – DevDave 2012-01-06 09:36:40

+0

如果您可以发布您的实际脚本,可能会很容易,可能是初始代码块 – 2012-01-06 09:41:35