当前位置首页 > 百科> 正文

declare

2019-10-18 07:15:23 百科

declare

declare,英文单词,意为:宣布,宣告;声明。在计算机语言中有vb中Declare语句、vf中的定义数组、Linux的命令、SQL中declare等含义。

基本介绍

  • 中文名:声明
  • 外文名:declare
  • 意为:宣布,宣告;声明。
  • 计算机语言:vbDeclare语句、vf定义数组
  • 语法:Public

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 结构也可用于全局範围,影响到其后的所有代码。
<?php// these are the same:// you can use this:declare(ticks=1) { // entire script here}// or you can use this:declare(ticks=1);// entire script here?>

Ticks

Tick 是一个在 declare 代码段中解释器每执行 N 条低级语句就会发生的事件。N 的值是在 declare 中的 directive 部分用 ticks=N 来指定的。
在每个 tick 中出现的事件是由register_tick_function()来指定的。更多细节见下面的例子。注意每个 tick 中可以出现多个事件。
例子 16-3. 评估一段 php 代码的执行时间
<?php// A function that records the time when it is calledfunction profile($dump = FALSE){ static $profile; // Return the times stored in profile, then erase it if ($dump) { $temp = $profile; unset($profile); return ($temp); } $profile[] = microtime();}// Set up a tick handlerregister_tick_function("profile");// Initialize the function before the declare blockprofile();// Run a block of code, throw a tick every 2nd statementdeclare(ticks=2) { for ($x = 1; $x < 50; ++$x) { echo similar_text(md5($x), md5($x*$x)), "<br />;"; }}// 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
声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:baisebaisebaise@yeah.net