2011-11-14 11 views
5

Tại sao tôi nên sử dụng GO khi viết sql cho sybase? Trong hầu hết các sql hiện có dự án của tôi có, không có GOs nhưng khi DDL được tạo ra để tạo bảng, ví dụ, ứng dụng chèn nhiều câu lệnh GO.Tại sao tôi nên sử dụng lệnh GO trong Sybase?

Nhờ câu trả lời, tôi hiểu rằng GO tương tự như ; trong các cơ sở dữ liệu khác, vì mọi người đã chỉ ra một cách hữu ích đó là Dấu phân tách.

Câu hỏi được thêm sau đó, là GO trong Sybase chính xác tương đương với nhập ; trong Oracle?

+0

http://tldp.org/HOWTO/Sybase-ASE-HOWTO/usage.html – Mob

+0

Hãy suy nghĩ về nó giống như 'chạy' trong chương trình BASIC cũ. –

+1

Đó là một sự thay thế không chuẩn đối với dấu phân tách câu lệnh tiêu chuẩn ';' –

Trả lời

9

Đó là dấu tách hàng loạt. GO được sử dụng để yêu cầu công cụ xử lý mọi thứ sau từ GO làm lệnh mới trong một loạt.

CREATE PROC usp_blah as ... 
GO 

CREATE some-otherproc as ... 
GO 

Without GO, tôi ưu hoa sẽ ném ra một lỗi tại CREATE tuyên bố thứ hai

1

GO là một SQL Delimiter

Bất kỳ xảy ra [GG] [oO] trong văn bản của một lệnh công việc được xem là dấu tách hàng loạt go.

3

Hãy so sánh:

Do something 
    GO 
    Do something else 
    Go 

Để:

Do something 
    Do something else 

Nếu có một lỗi trong quá trình 'làm một cái gì đó' trong ví dụ đầu tiên sau đó 'Làm cái gì khác' sẽ vẫn chạy. Đây không phải là trường hợp trong ví dụ thứ hai. Và như Stuart đã chỉ ra có một số hành động yêu cầu phải là câu lệnh đầu tiên của một đợt, nghĩa là bạn phải đặt GO trước khi chúng trừ khi đó là dòng đầu tiên của tệp của bạn.

1

Dấu phân tách được gọi là không phải là một phần của cú pháp ngôn ngữ Giao dịch-SQL của SAP/Sybase.

Nó thường được coi là dấu tách hàng loạt để phân tách một loạt các câu lệnh T-SQL từ kế tiếp.

Vì tất cả các kịch bản lệnh SAP/Sybase được thực thi bằng cách sử dụng máy khách dòng lệnh isql, đi, được khách hàng isql hiểu là tín hiệu gửi tất cả các lệnh T-SQL được nhập vào bộ đệm của nó cho đến máy chủ ASE kết nối mạng người dùng máy chủ-máy khách (đi không xuất hiện trong theo dõi mạng, nó không được gửi đến máy chủ).

Ngẫu nhiên, isql chỉ nhận dạng được trong trường hợp thấp hơn và không được tiếp tục bởi bất kỳ khoảng trắng nào.