第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

在Oracle SQL中,何時(shí)需要使用分號和斜杠?

在Oracle SQL中,何時(shí)需要使用分號和斜杠?

茅侃侃 2019-06-12 16:29:23
在Oracle SQL中,何時(shí)需要使用分號和斜杠?本周,我們在我的公司就如何編寫SQL腳本進(jìn)行了一些討論。背景:我們的數(shù)據(jù)庫是Oracle 10g(升級到11很快)。我們的DBA團(tuán)隊(duì)使用SQLPlus來將腳本部署到生產(chǎn)中?,F(xiàn)在,我們最近的部署失敗了,因?yàn)樗瑫r(shí)使用了分號和正斜杠(/)。分號在每個(gè)語句的末尾,斜杠在語句之間。alter table foo.bar drop constraint bar1;/alter table foo.can drop constraint can1;/后面在腳本中添加了一些觸發(fā)器,創(chuàng)建了一些視圖以及一些存儲過程。同時(shí)擁有;而/導(dǎo)致每個(gè)語句運(yùn)行兩次,導(dǎo)致錯(cuò)誤(特別是在需要唯一的插入上)。在SQLDeveloper中,這種情況不會發(fā)生,在TOAD中則不會發(fā)生。如果運(yùn)行某些命令,則沒有/在他們身上。在PL/SQL中,如果您有一個(gè)子程序(聲明、開始、結(jié)束),所使用的分號將被視為子程序的一部分,因此必須使用斜杠。所以我的問題是:如果您的數(shù)據(jù)庫是Oracle,那么編寫SQL腳本的正確方法是什么?因?yàn)槟滥腄B是Oracle,所以應(yīng)該始終使用/?
查看完整描述

3 回答

?
溫溫醬

TA貢獻(xiàn)1752條經(jīng)驗(yàn) 獲得超4個(gè)贊

這是一個(gè)優(yōu)先考慮的問題,但我更愿意看到持續(xù)使用斜杠的腳本-這樣,所有的“工作單元”(創(chuàng)建PL/SQL對象、運(yùn)行PL/SQL匿名塊和執(zhí)行DML語句)都可以通過眼睛更容易地識別出來。

另外,如果您最終轉(zhuǎn)向類似Ant的部署,那么它將簡化目標(biāo)的定義,使其具有一致的語句分隔符。


查看完整回答
反對 回復(fù) 2019-06-12
?
慕容森

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超18個(gè)贊

我知道這是一個(gè)老生常談,但我只是偶然發(fā)現(xiàn),我覺得這一點(diǎn)還沒有得到完全解釋。

在SQL*Plus中,/和一個(gè);因?yàn)樗麄兊墓ぷ鞣绞讲煌?/trans>

這個(gè);結(jié)束SQL語句,而/執(zhí)行當(dāng)前“緩沖區(qū)”中的任何內(nèi)容。所以當(dāng)你使用;  a /該語句實(shí)際上執(zhí)行了兩次。

您可以很容易地看到,使用/運(yùn)行語句之后:

SQL*Plus: Release 11.2.0.1.0 Production on Wed Apr 18 12:37:20 2012Copyright (c) 1982, 2010, Oracle.  
All rights reserved.Connected to:Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - ProductionWith the Partitioning and OLAP options

SQL> drop table foo;Table dropped.SQL> /drop table foo           *ERROR at line 1:ORA-00942: table or view does not exist

在這種情況下,人們實(shí)際上注意到了錯(cuò)誤。


但是,假設(shè)有這樣的SQL腳本:

drop table foo;/

這是從SQL*Plus內(nèi)部運(yùn)行的,這將非常令人困惑:

SQL*Plus: Release 11.2.0.1.0 Production on Wed Apr 18 12:38:05 2012Copyright (c) 1982, 2010, Oracle.  
All rights reserved.Connected to:Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - ProductionWith the Partitioning and OLAP options

SQL> @dropTable dropped.drop table foo           *ERROR at line 1:ORA-00942: table or view does not exist

這個(gè)/主要是為了運(yùn)行嵌入了;就像CREATE PROCEDURE聲明。


查看完整回答
反對 回復(fù) 2019-06-12
  • 3 回答
  • 0 關(guān)注
  • 2176 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號