declare

declare

declare,英文單詞,意為:宣布,宣告;聲明。在計算機語言中有vb中Declare語句、vf中的定義數組、Linux的命令、SQL中declare等含義。

vb


語法和引用

用於在模塊級別中聲明對動態鏈接庫(DLL) 中外部過程的引用。
語法 1 [Public | Private] Declare Sub name Lib "libname" [Alias "aliasname"] [([arglist])]
語法 2 [Public | Private] Declare Function name Lib "libname" [Alias "aliasname"] [([arglist])] [As type]
Declare語句的語法包含下面部分:
部分描述
Public可選的。用於聲明對所有模塊中的所有其它過程都可以使用的過程。
Private可選的。用於聲明只能在包含該聲明的模塊中使用的過程。
Sub可選的(但 Sub 或 Function 二者需選其一)。表示該過程沒有返回值。
Function可選的(但 Sub 或 Function 二者需選其一)。表示該過程會返回一個可用於表達式的值。
name必需的。任何合法的過程名。注意動態鏈接庫的入口處(entry points)區分大小寫。
Lib必需的。指明包含所聲明過程的動態鏈接庫或代碼資源。所有聲明都需要 Lib 子句。
libname必需的。包含所聲明的過程動態鏈接庫名或代碼資源名。
Alias可選的。表示將被調用的過程在動態鏈接庫(DLL) 中還有另外的名稱。當外部過程名與某個關鍵字重名時,就可以使用這個參數。當動態鏈接庫的過程與同一範圍內的公用變數、常數或任何其它過程的名稱相同時,也可以使用 Alias。如果該動態鏈接庫過程中的某個字元不符合動態鏈接庫的命名約定時,也可以使用 Alias。
aliasname可選的。動態鏈接庫或代碼資源中的過程名。如果首字元不是數字元號 (#),則 aliasname 是動態鏈接庫中該過程的入口處的名稱。如果首字元是 (#),則隨後的字元必須指定該過程的入口處的順序號。
arglist可選的。代表調用該過程時需要傳遞的參數的變數表。
type可選的。Function 過程返回值的數據類型;可以是 Byte、布爾、Integer、Long、Currency、Single、Double、Decimal(目前尚不支持)、Date、String(只支持變長)或 Variant,用戶定義類型,或對象類型。
arglist參數的語法以及語法各個部分如下:
[Optional] [ByVal | ByRef] [ParamArray] varname[( )] [As type]
部分描述
Optional可選的。表示參數不是必需的。如果使用該選項,則 arglist 中的後續參數都必需是可選的,而且必須都使用 Optional 關鍵字聲明。如果使用了 ParamArray,則任何參數都不能使用 Optional。
ByVal可選的。表示該參數按值傳遞。ByRef表示該參數按地址傳遞。 ByRef 是 Visual Basic 的預設選項。
ParamArray可選的。只用於 arglist 的最後一個參數,表示最後的參數是一個 Variant 元素的 Optional 的數組。使用 ParamArray關鍵字可以提供任意數目的參數。ParamArray 關鍵字不能與 ByVal、ByRef或 Optional 一起使用。
varname必需的。代表傳給該過程的參數的變數名;遵循標準的變數命名約定。( )對數組變數是必需的。指明 varname 是一個數組。
type可選的。傳遞給該過程的參數的數據類型;可以是 Byte、Boolean、Integer、Long、Currency、Single、Double、Decimal(目前尚不支持)、Date、String(只支持變長)、Object、Variant、用戶自定義的類型或對象類型。

說明和注意

對Function 過程而言,過程的數據類型決定其返回值的數據類型。可以在 arglist 之後使用 As 子句來指定函數返回值的數據類型。在 arglist 中,可以使用 As 子句來指定任何傳給該過程的參數的數據類型。不單可以指定為任何標準數據類型,還可以在 arglist 中指定 As Any 來禁止類型檢查,從而允許將任意數據類型傳遞給該過程。
空圓括弧表示該 Sub 或 Function 過程沒有參數,且 Visual Basic 應確保不會傳遞任何參數。在下面的示例中,First 不帶任何參數。如果對 First 的調用中使用了參數,就會產生錯誤:Declare Sub First Lib "MyLib" ()如果帶參數表,則每次調用該過程時都要檢查參數的個數和類型。
在下面的示例中,First 有一個 Long 參數:Declare Sub First Lib "MyLib" (X As Long)
注意1在 Declare 語句的參數表中不能有定長的字元串;只有變長的字元串才能傳給過程。定長的字元串可以作為過程參數使用,但在傳遞前都要被轉換為變長的字元串。
注意2當所調用的外部過程需要一個值為 0 的字元串時,就要使用 vbNullString 常數。該常數與零長度字元串 ("") 是不相同的。

vf


在vf中,可以用declare定義數組,和dimension一樣,
命令格式:dimension <數組名1>(<數字錶達式1>[,<數字錶達式2>])[,<數組名2>(數字錶達式1>[,<數字錶達式2>])……]
例如:DIMENSION A(1),B(1,1)

Linux


功能說明:聲明 shell 變數。
語 法:declare [+/-][afrix]
補充說明:declare為shell指令,在第一種語法中可用來聲明變數並設置變數的屬性([rix]即為變數的屬性),在第二種語法中可用來顯示shell函數。若不加上任何參數,則會顯示全部的shell變數與函數(與執行set指令的效果相同)。
參 數:
+/- "-"可用來指定變數的屬性,"+"則是取消變數所設的屬性。
-a 定義為數組array
-f 定義為函數function
-i 定義為整數integer
-r 定義為只讀
-x 定義為通過環境輸出變數

SQL


功能說明:SQL塊中聲明變數。
語 法:declare變數名稱 變數類型; l_count number;
例:
declare
l_sql varchar2(2000);
l_count number;
l_param1 varchar2(100);
l_param2 varchar2(100);
begin

php


declare 結構用來設定一段代碼的執行指令。declare 的語法和其它流程式控制制結構相似:
declare (directive) statement
directive 部分允許設定 declare 代碼段的行為。目前只認識一個指令:ticks(更多信息見下面 ticks 指令)。
declare 代碼段中的 statement 部分將被執行――怎樣執行以及執行中有什麼副作用出現取決於 directive 中設定的指令。
declare 結構也可用於全局範圍,影響到其後的所有代碼。

Ticks


Tick 是一個在 declare 代碼段中解釋器每執行 N 條低級語句就會發生的事件。N 的值是在 declare 中的 directive 部分用 ticks=N 來指定的。
在每個 tick 中出現的事件是由 register_tick_function()來指定的。更多細節見下面的例子。注意每個 tick 中可以出現多個事件。
例子 16-3. 評估一段 php 代碼的執行時間
;"; }}// Display the data stored in the profilerprint_r(profile (TRUE));?>這個例子評估“declare”中的 php 代碼,每執行兩條低級語句就記錄一次時間。此信息可以用來找到一段特定代碼中速度慢的部分。這個過程也可以用其它方法完成,但用 tick 更方便也更容易實現。 Ticks 很適合用來做調試,以及實現簡單的多任務,後台 I/O 和很多其它任務。
參見 register_tick_function()和 unregister_tick_function()。

經典語句


一。隨機批量插入信息
DECLARE @MyID uniqueidentifier
DECLARE @INT AS INT
SET @INT = 0
WHILE @INT < 20 --這裡設置需要插入多少行
BEGIN
SET @INT = @INT + 1
SET @MyID = NEWID()
INSERT INTO testss (testa, testb,CateID) SELECT substring(CONVERT(nvarchar(50), @MyID),3,16), substring(CONVERT(nvarchar(50), @MyID),5,16),rand() * 100
END
二。批量更新
DECLARE @INT AS INT
DECLARE @ntt AS INT
SET @INT = 1
set @ntt = 1
WHILE @INT <1000
WHILE @ntt <10000--設置對應行數
BEGIN
SET @INT = @INT + 1
set @ntt = @ntt + 1
update aatable set UserID=@INT where ID=@ntt
END