2015-05-04 131 views
3

在課堂上,我們被要求命名幾個PL/SQL函數並說明它們的用法。有人提到了CREATE FUNCTION,我注意到Oracle將它標記爲聲明而不是函數。函數和語句之間的區別

我無法對兩者之間的差異給出很好的答案。我認爲一個聲明更像是一個聲明性工具,它指定程序要完成什麼,而函數似乎更具有過程性,我們在CREATE FUNCTION語句中定義了一個新函數的過程。

區分似乎更清晰的東西像一個SELECT語句,有人可以幫助明確界定兩者之間?

回答

1

語句是一段執行的代碼。這是一個命令。它做了一些事情。例如:

打印的「Hello World」

函數是的,你用參數調用代碼塊,它返回一個值(即使該值是不確定的)。例如:

函數(){返回* 2}

0

單詞 「語句」 在SQL和PL/SQL兩種不同的含義。

在狹義的技術意義上,CREATE FUNCTION是一種SQL語句,而CREATE FUNCTION包含PL/SQL語句。

在更一般的意義上,一個SQL語句是聲明的代碼,告訴數據庫「什麼是真正的」或「如何做」「什麼做」,沒有詳細說明。函數或任何PL/SQL塊是命令性的代碼,它告訴數據庫到底是「要做什麼」。聲明式SQL通常比命令式PL/SQL更簡單,更快,因此通常最好是在SQL中完成大部分工作,並將它與PL/SQL結合在一起。


SQL具有約170的命令(如由V$SQLCOMMAND定義),組織成約31語句類型,組織成the below 6 categories。該CREATE FUNCTION命令是在DDL類別CREATE語句類型。該分類方案並非從數據庫和手冊中完全清楚,但我已將其用於thoroughly classify all SQL statements

Data Definition Language (DDL) Statements 

Data Manipulation Language (DML) Statements 

Transaction Control Statements 

Session Control Statements 

System Control Statement 

Embedded SQL Statements 

在PL/SQL,最blocks是語句序列。這些語句可以是一個賦值,循環,取,塊等

enter image description here


爲了使事情變得更加混亂,在12C SQL語句可以包含PL/SQL語句:

with function f return number is begin return 1; end; select f from dual; 
+0

謝謝你,你可以說有一個什麼「功能」如何比SQL語句不同。 –

1

CREATE FUNCTION是一個語句。該功能本身是FUNCTION。運行創建函數的語句允許您訪問函數。

在一般情況下,如果你在數據庫中創建任何東西,你正在使用的語句(尤其是數據定義語言(DDL)語句)。您創建的項目,無論是桌子,功能,包裝等,則可以在以後的語句引用。

相關問題