语法在做什么?

时间:2019-09-10 14:54:31

标签: sql-server tsql

我有一段代码我不熟悉sql server,只有oracle。有人可以告诉我这是怎么回事吗?谢谢。

  • 什么是@flowcontrol
  • @flowcontrol = @@ error设置了什么?为什么要两个@@?
  • 为什么要打印两次?打印在这里做什么?
  • raiseerror在做什么?

Use [ra8]
declare @flowcontrol integer
set @flowcontrol = @@error
if @flowcontrol = 0 
begin
  print ' '
  print 'create temp[nw] table'
  create table [dbo].[temp] ([feild] [varchar] (200) nulll
end
else
begin
  print ' '
  print ' '
  raiserror('raiseerror: create temp[nw] failed',12,1) with seterror
end
go

2 个答案:

答案 0 :(得分:3)

@@VARIABLE-表示它是SQL Server维护的全局变量。这样的变量表示特定于服务器或当前用户会话的信息。

此Wiki页面上列出了它们和示例值:Global Variables in SQL Server

答案 1 :(得分:3)

  

什么是@flowcontrol

  • @flowcontrol在这种情况下是一个整数变量(上面已声明)
  

@flowcontrol = @@ error设置了什么?为什么要两个@@?

  • 2 @表示这是一个特殊的-或系统-功能
  

为什么要打印两次?打印在这里做什么?

  • print是在“管道”(SQL Management Studio中的消息部分)中编写的函数。我认为他们是为了在邮件中留出一些空间以便于阅读。
  

raiseerror在做什么?

  • Raiseerror,顾名思义-正在引发错误。

在全球范围内,这是在创建一个整数变量,检查上一条指令中的错误,如果没有错误,则创建一个表,否则引发错误。