SQL脚本中的go是啥意思

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL脚本中的go是啥意思相关的知识,希望对你有一定的参考价值。

SQL脚本中的go是什么意思

批处理的结束标记
批处理是一个可执行单元。
select * form t
go
select * from t
在这个示例中就用go被分成的两个执行单元,上一个批处理有语法错误,单不会影响下一个的执行。
参考技术A --分格语句块用的,即把语句分成独立的二个语句块,看下面示例;:

DECLARE @MyMsg VARCHAR(50)
SELECT @MyMsg = 'Hello, World.'
PRINT @MyMsg -- @MyMsg 在这里可以正确输出
GO
--在执行GO之后,上面的@MyMsg就失效了

PRINT @MyMsg --这里的@MyMsg是新块的,因为没有声明,会产生错误
GO
参考技术B go
是sybase和sql
server顶用来表示事物停止,提交并确认结不雅。相当于oracle的commit
查看更多答案>>
参考技术C 执行当前语句

Go 中的“值语义”和“指针语义”是啥意思?

【中文标题】Go 中的“值语义”和“指针语义”是啥意思?【英文标题】:What do "value semantics’" and "pointer semantics" mean in Go?Go 中的“值语义”和“指针语义”是什么意思? 【发布时间】:2018-12-18 05:55:37 【问题描述】:

值语义指针语义在Go中是什么意思?在this course中,作者在解释数组和切片的内部时曾多次提及上述术语,我无法完全理解。

【问题讨论】:

【参考方案1】:

当您调用函数或方法并向其传递参数时,会从这些值中创建一个副本,并且该函数只能访问这些副本。

这意味着如果函数试图修改/更改副本,它不会更改原始值。

例如:

func main() 
    i := 1
    fmt.Println("double:", double(i))
    fmt.Println("original i:", i)


func double(i int) int 
    i *= 2
    return i

这个输出(在Go Playground上试试):

double: 2
original i: 1

即使double() 修改了它的i 参数,调用者的变量(其值被传递)并没有改变。

为了改变它,我们需要改变签名以期望一个指针,传递一个指针,并修改指向的值:

func main() 
    i := 1
    fmt.Println("double:", doublep(&i))
    fmt.Println("original i:", i)


func doublep(i *int) int 
    *i *= 2
    return *i

这个输出(在Go Playground上试试):

double: 2
original i: 2

所以如果我们传递一些东西,我们期望原始值在传递的值被修改时不会改变,除非我们传递一个指向它的指针。

指针语义意味着即使我们“按值”传递一些东西,被调用者仍然可以修改“原始”值,就像我们传递一个指向它的指针一样。

例如:

func main() 
    is := []int1, 2
    fmt.Println("double:", doubles(is))
    fmt.Println("original is:", is)


func doubles(is []int) []int 
    for i := range is 
        is[i] *= 2
    
    return is

这个输出(在Go Playground上试试):

double: [2 4]
original is: [2 4]

即使我们没有传递指针(is 不是指针),调用也修改了它的元素,原始切片的值也发生了变化。

我们说尽管在 Go 中一切都是按值传递的,但传递切片具有指针语义,因为如果被调用者修改了元素,它会反映在原来的中。

推理

Go 中的所有内容都是按值传递的,切片也是如此。但是切片在底层是类似于结构的数据结构,它包含一个指向包含实际元素的底层数组的指针。并且当您传递一个切片时,会制作一个副本,但只会复制这个切片标头(这是切片值)。副本将持有相同的指针,指向相同的后备数组。不复制后备数组。所以当被调用者修改 slice 的元素时,backing array 的元素也被修改了,和原来 slice 的 backing array 是一样的。

在此处了解更多信息:Are golang slices pass by value?

有许多类型具有指针传递语义,例如切片、映射、通道。

值得注意的是,与切片不同,数组不在行中,数组值表示其所有值,传递数组会复制其所有元素。

【讨论】:

以上是关于SQL脚本中的go是啥意思的主要内容,如果未能解决你的问题,请参考以下文章

执行sql命令是要求输入参数值是啥意思

SQL注入是啥意思?

goe是啥意思sql

GO 语句炸毁 .NET 中的 sql 执行

ON [PRIMARY] 是啥意思?

在某些 sql server profiler sql 窗口中,默认值是啥意思?