Transact-SQL 參考

成都創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),石景山企業(yè)網(wǎng)站建設(shè),石景山品牌網(wǎng)站建設(shè),網(wǎng)站定制,石景山網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,石景山網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。
GO
用信號通知 Microsoft? SQL Server? 實用工具一批 Transact-SQL 語句的結(jié)束。
語法
GO
注釋
GO 不是 Transact-SQL 語句;而是可為 osql 和 isql 實用工具及 SQL Server 查詢分析器識別的命令。
SQL Server 實用工具將 GO 解釋為應(yīng)將當(dāng)前的 Transact-SQL 批處理語句發(fā)送給 SQL Server 的信號。當(dāng)前批處理語句是自上一 GO 命令后輸入的所有語句,若是第一條 GO 命令,則是從特殊會話或腳本的開始處到這條 GO 命令之間的所有語句。SQL 查詢分析器和 osql 及 isql 命令提示實用工具執(zhí)行 GO 命令的方式不同。有關(guān)更多信息,請參見 osql 實用工具、isql 實用工具和 SQL 查詢分析器。
GO 命令和Transact-SQL 語句不可在同一行上。但在 GO 命令行中可包含注釋。
用戶必須遵照使用批處理的規(guī)則。例如,在批處理中的第一條語句后執(zhí)行任何存儲過程必須包含 EXECUTE 關(guān)鍵字。局部(用戶定義)變量的作用域限制在一個批處理中,不可在 GO 命令后引用。
USE pubs
GO
DECLARE @MyMsg VARCHAR(50)
SELECT @MyMsg = 'Hello, World.'
GO -- @MyMsg is not valid after this GO ends the batch.
-- Yields an error because @MyMsg not declared in this batch.
PRINT @MyMsg
GO
SELECT @@VERSION;
-- Yields an error: Must be EXEC sp_who if not first statement in
-- batch.
sp_who
GO
SQL Server 應(yīng)用程序可將多條 Transact-SQL 語句作為一個批處理發(fā)給 SQL Server 去執(zhí)行。在此批處理中的語句編譯成一個執(zhí)行計劃。程序員在 SQL Server 實用工具中執(zhí)行特定語句,或生成 Transact-SQL 語句腳本在 SQL Server 實用工具中運行,用 GO 來標(biāo)識批處理的結(jié)束。
如果基于 DB-Library、ODBC 或 OLE DB APIs 的應(yīng)用程序試圖執(zhí)行 GO 命令時會收到語法錯誤。SQL Server 實用工具永遠不會向服務(wù)器發(fā)送 GO 命令。
權(quán)限
GO 是一個不需權(quán)限的實用工具命令。可以由任何用戶執(zhí)行。
示例
下面的示例創(chuàng)建兩個批處理。第一個批處理只包含一條 USE pubs 語句,用于設(shè)置數(shù)據(jù)庫上下文。剩下的語句使用了一個局部變量,因此所有的局部變量聲明必須在一個批處理中。這一點可通過在最后一條引用此變量的語句之后才使用 GO 命令來做到。
USE pubs
GO
DECLARE @NmbrAuthors int
SELECT @NmbrAuthors = COUNT(*)
FROM authors
PRINT 'The number of authors as of ' +
CAST(GETDATE() AS char(20)) + ' is ' +
CAST(@NmbrAuthors AS char (10))
GO
一般命令
所謂一般命令,就是在一定時間內(nèi)會執(zhí)行完的命令。比如 grep, cat 等等。 執(zhí)行命令的步驟是:連接,執(zhí)行,獲取結(jié)果
連接
連接包含了認(rèn)證,可以使用 password 或者 sshkey 2種方式來認(rèn)證。下面的示例為了簡單,使用了密碼認(rèn)證的方式來完成連接。
import (
"fmt"
"time"
"golang.org/x/crypto/ssh"
)
func connect(user, password, host string, port int) (*ssh.Session, error) {
var (
auth []ssh.AuthMethod
addr string
clientConfig *ssh.ClientConfig
client *ssh.Client
session *ssh.Session
err error
)
// get auth method
auth = make([]ssh.AuthMethod, 0)
auth = append(auth, ssh.Password(password))
clientConfig = ssh.ClientConfig{
User: user,
Auth: auth,
Timeout: 30 * time.Second,
}
// connet to ssh
addr = fmt.Sprintf("%s:%d", host, port)
if client, err = ssh.Dial("tcp", addr, clientConfig); err != nil {
return nil, err
}
// create session
if session, err = client.NewSession(); err != nil {
return nil, err
}
return session, nil
}
連接的方法很簡單,只要提供登錄主機的 用戶*, *密碼*, *主機名或者IP*, *SSH端口
執(zhí)行,命令獲取結(jié)果
連接成功后,執(zhí)行命令很簡單
import (
"fmt"
"log"
"os"
"time"
"golang.org/x/crypto/ssh"
)
func main() {
session, err := connect("root", "xxxxx", "127.0.0.1", 22)
if err != nil {
log.Fatal(err)
}
defer session.Close()
session.Run("ls /; ls /abc")
}
上面代碼運行之后,雖然命令正常執(zhí)行了,但是沒有正常輸出的結(jié)果,也沒有異常輸出的結(jié)果。 要想顯示結(jié)果,需要將 session 的 Stdout 和 Stderr 重定向 修改 func main 為如下:
func main() {
session, err := connect("root", "xxxxx", "127.0.0.1", 22)
if err != nil {
log.Fatal(err)
}
defer session.Close()
session.Stdout = os.Stdout
session.Stderr = os.Stderr
session.Run("ls /; ls /abc")
}
這樣就能在屏幕上顯示正常,異常的信息了。
交互式命令
上面的方式無法遠程執(zhí)行交互式命令,比如 top , 遠程編輯一個文件,比如 vi /etc/nginx/nginx.conf 如果要支持交互式的命令,需要當(dāng)前的terminal來接管遠程的 PTY。
func main() {
session, err := connect("root", "olordjesus", "dockers.iotalabs.io", 2210)
if err != nil {
log.Fatal(err)
}
defer session.Close()
fd := int(os.Stdin.Fd())
oldState, err := terminal.MakeRaw(fd)
if err != nil {
panic(err)
}
defer terminal.Restore(fd, oldState)
// excute command
session.Stdout = os.Stdout
session.Stderr = os.Stderr
session.Stdin = os.Stdin
termWidth, termHeight, err := terminal.GetSize(fd)
if err != nil {
panic(err)
}
// Set up terminal modes
modes := ssh.TerminalModes{
ssh.ECHO: 1, // enable echoing
ssh.TTY_OP_ISPEED: 14400, // input speed = 14.4kbaud
ssh.TTY_OP_OSPEED: 14400, // output speed = 14.4kbaud
}
// Request pseudo terminal
if err := session.RequestPty("xterm-256color", termHeight, termWidth, modes); err != nil {
log.Fatal(err)
}
session.Run("top")
}
總結(jié)
好了,這樣就可以執(zhí)行交互式命令了,比如上面的 top 也可以通過 vi /etc/nginx/nignx.conf 之類的命令來遠程編輯文件。
您好,很高興為您解答。
安裝daemonize
安裝git環(huán)境
yum?install?git?-y
獲取daemonize
git?clone?git://github.com/bmc/daemonize.git
安裝daemonize
cd?daemonize
./configure
make??make?install
查看是否安裝
daemonize?-v
通過daemonize執(zhí)行g(shù)olang守護進程
需要打包golang程序為可執(zhí)行文件(go build),并通過daemonize來執(zhí)行它來實現(xiàn)守護進程,如:
daemonize?-p?/var/run/myapp.pid?-l?/var/lock/subsys/myapp?-u?nobody?/path/to/myapp
如若滿意,請點擊右側(cè)【采納答案】,如若還有問題,請點擊【追問】
希望我的回答對您有所幫助,望采納!
~?O(∩_∩)O~
1、goroutine:在go語言中,每一個并發(fā)的執(zhí)行單元叫做goroutine,如果一個程序中包含多個goroutine,對兩個函數(shù)的調(diào)用則可能發(fā)生在同一時刻
2、main goroutine:當(dāng)一個程序啟動時,其主函數(shù)即在一個單獨的goroutine中運行,我們叫他為main gorountine
3、go goroutine:新的goroutine會用go語句來創(chuàng)建,go+函數(shù)名,go語句會使其語句中的函數(shù)在一新創(chuàng)建的goroutine中運行,而go語句本身會迅速地完成
4、goroutine的退出:主函數(shù)返回時,所有的goroutine都會被直接打斷,程序退出,除了從主函數(shù)退出或者終止程序之外,沒有其他方法能夠讓一個goroutine來打斷另一個的執(zhí)行,但是可以通過另一種方式來實現(xiàn)這個目的,通過goroutine之間的通信來讓一個goroutine請求其他的goroutine,并讓請求的goroutine自行結(jié)束執(zhí)行
網(wǎng)站欄目:go語言程序如何執(zhí)行 go語言編寫
瀏覽地址:http://www.chinadenli.net/article6/dddhcog.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、網(wǎng)站營銷、網(wǎng)站導(dǎo)航、小程序開發(fā)、網(wǎng)站排名、網(wǎng)站設(shè)計公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)