当前位置: 首页 > 知识库问答 >
问题:

如果CREATE/ALTER不是第一个语句,脚本总是抛出错误

关昊天
2023-03-14

当我尝试执行本文末尾给出的脚本时,我遇到错误。我的要求是检查过程是否存在,如果存在,则将其删除,最后创建过程。

如何使用单个脚本文件执行此操作?

过程Proc_GenerateTestData'“创建/更改过程”必须是查询批处理中的第一条语句。SQL2.sql 12 1

始终抛出上述错误的 SQL 脚本如下所示。

IF OBJECT_ID('dbo.Proc_GenerateTestData', 'p') IS NOT NULL
BEGIN
  DROP PROCEDURE dbo.Proc_GenerateTestData
END


CREATE PROCEDURE dbo.Proc_GenerateTestData @numberOfRecords INT = 100
AS
  --drop table #temp1

  DECLARE @currentTime AS TIME = CAST(GETDATE() AS TIME);
  DECLARE @currentWorkShiftDate AS DATETIME = CAST(CAST(GETDATE() AS DATE) AS DATETIME);

  DECLARE @startTime TIME,
          @lastShiftStartTime TIME;

  DECLARE @tenantId AS UNIQUEIDENTIFIER = (SELECT TOP (1)
    Tenants.Id
  FROM Tenants
  ORDER BY Tenants.Id ASC);
  DECLARE @workshiftId INT,
  @lastShiftStartDate DATETIME;
  --more statements for this procedure follow

共有1个答案

夏侯弘量
2023-03-14

正如错误明确指出的那样,CREATE过程必须是查询批处理中的第一条语句。

这里的情况并非如此,因为您事先需要检查DROP

您需要更改脚本,以便<code>CREATE PROCEDURE</code>语句实际上是查询批处理中的第一个语句。如果要在SQL Server Management Studio中运行此功能,只需在创建之前添加一个转到分隔符。

 类似资料:
  • 我正在使用java.net.HttpUrlConnection向我的服务器发出Http请求。我意识到如果服务器返回错误状态(例如 400)。HttpUrlConnection 将抛出与错误状态对应的 IOException。 我的问题是:如果服务器返回错误状态(4xx,5xx),HttpUrlConnection是否总是抛出IOException? 我看了一下HttpUrlConnection A

  • 出身背景 我正在使用命令行界面对DB2运行flyway迁移。我做了很多测试,一切都很好。我添加了一些命令以导致失败。 问题 有人能确认如果迁移失败并且数据库支持DDL,是否应该回滚更改表、删除表或创建表吗?当我测试它时,它看起来像是在同一个flyway脚本中失败后没有回滚更改表添加列语句。

  • 问题内容: 我正在使用 **java.net.HttpUrlConnection** 向我的服务器发出Http请求。我意识到,如果服务器返回错误状态(例如400)。HttpUrlConnection将抛出与错误状态相对应的IOException。 我的问题是: 如果服务器返回错误状态(4xx,5xx),HttpUrlConnection是否总是抛出IOException吗? 我看一下HttpUrl

  • 出于某种原因,这段代码给了我一个无法捕捉的异常错误。catch块似乎没有捕捉到错误。try catch块的作用范围是否如此,以至于我不能在嵌套函数中抛出一个错误,然后期望它被一个作用范围更高的catch语句捕获?我正在使用的应用程序中的一些敏感数据已经被删除,但它预期leadInfo[ 0 / 1]将是一个32个字符的字母数字字符串,我从URL参数中提取。 这里的根本问题是我的AJAX调用从API

  • 问题内容: 在Oracle SQL Developer中输入SQL语句时,我注意到我有两个选择。我可以选择“运行语句”或“运行脚本”。尽管命名为“ Execute query”和“ Execute as script”,但在SQL Maestro中似乎也可以使用类似的选择。 两者之间到底有什么区别? 问题答案: 将在可排序的表格中为您提供所有结果的列表。它还将仅在光标(或突出显示)下运行该语句。运