📄 第二章 pl-sql基础 - pl-sql用户指南与参考 - whatiswhat.htm
字号:
<TD>关系操作符</TD></TR>
<TR>
<TD>>=</TD>
<TD>关系操作符</TD></TR>
<TR>
<TD>--</TD>
<TD>单行注释提示符</TD></TR></TBODY></TABLE>
<P class=title2>2、标识符</P>
<P>我们可以使用标识符来为PL/SQL程序中的常量、变量、异常、游标、游标变量、子程序和包命名。下面是一些标识符的例子:
</P>
<OL>
<LI>X
<LI>t2
<LI>phone#
<LI>credit_limit
<LI>LastName
<LI>oracle$number </LI></OL>
<P>标识符可以由字母、数字、美元符号($)、下划线(_)和数字符号(#)组成。而像连字符(-)、斜线(/)等符号都是不允许使用的。如下例:
</P>
<OL>
<LI>mine&yours -- 不允许使用连字符(not allowed because of
ampersand)
<LI>debit-amount -- 不允许使用连字符(not allowed because of
hyphen)
<LI>on/off -- 不允许使用斜线(not allowed because of slash)
<LI>user id -- 不允许使用空格(not allowed because of space)
</LI></OL>
<P>而使用美元符号、下划线和数字符号都是允许的: </P>
<OL>
<LI>money$$$tree
<LI>SN##
<LI>try_again_ </LI></OL>
<P>我们也可以使用大小写混合的形式来编写标识符。但是要记住,除了字符串和字符以外,PL/SQL对大小写是不敏感的。所以,只在大小写上有区别的标识符,PL/SQL会把它们当做同一标识处理,如下例:
</P>
<OL>
<LI>lastname
<LI>LastName -- 与lastname相同
<LI>LASTNAME -- 与lastname和Lastname相同 </LI></OL>
<P>标识符的长度不能超过30。对于标识符的命名尽可能代表某种含义,避免使用像cpm这样的命名,而是使用cost_per_tdousand这样意义明确的命名方式。
</P>
<UL>
<LI>保留关键字 </LI></UL>
<P>对于某些标识符,我们称它们为保留关键字(reserved
word),因为对于PL/SQL来说,它们有着特殊含义,不可以被重新定义。例如BEGIN和END,它们代表块或子程序的起始和结束而被PL/SQL
保留下来。在下面的例子中,我们可以看到,如果重定义一个关键字的话,就会产生一个编译错误: </P>
<BLOCKQUOTE>
<TABLE>
<TBODY>
<TR>
<TD
noWrap><STRONG>DECLARE</STRONG><BR> end <STRONG>BOOLEAN</STRONG>; <EM>-- not allowed; causes compilation error</EM>
</TD></TR></TBODY></TABLE></BLOCKQUOTE>
<P>但像下面这样把保留关键字嵌套在标识符中使用是允许的: </P>
<BLOCKQUOTE>
<TABLE>
<TBODY>
<TR>
<TD
noWrap><STRONG>DECLARE</STRONG><BR> end_of_game <STRONG>BOOLEAN</STRONG>; <EM>-- allowed</EM>
</TD></TR></TBODY></TABLE></BLOCKQUOTE>
<P>通常,保留关键字都是以大写形式存在的,这样能够增强可读性。但是,跟其他PL/SQL标识符一样,保留关键字也可以使用小写或大小写混合的形式。
</P>
<UL>
<LI>预定义标识 </LI></UL>
<P>在包STANDARD中声明的全局标识符(如INVALID_NUMBER)是可以被重新声明的。但是,不建议重新声明预定义标识符,因为这样做的结果会使本地声明覆盖全局声明。
</P>
<UL>
<LI>引用标识符 </LI></UL>
<P>为了获取更多的灵活性,PL/SQL允许我们用双引号将标识符夹起来。这样的标识符很少使用,但有时它们非常有用。它们可以包含任何可打印字符,其中空格也包含在内,但是,不可以包含双引号。因此,下面这些引用标识符都是有效的:
</P>
<OL>
<LI>"X+Y"
<LI>"last name"
<LI>"on/off switch"
<LI>"employee(s)"
<LI>"*** header info ***" </LI></OL>
<P>除了双引号以外,引用标识符最多可以包含30个字符。虽然把PL/SQL保留关键字作为引用标识符是被允许的,但这并不是一个好的编程习惯。
</P>
<P>有些PL/SQL保留关键字并不是SQL的保留关键字。例如,我们可以在CREATE
TABLE语句中使用TYPE作为字段名。但是,如果程序中的SQL语句要引用到这个字段的话,就会发生编译错误:
</P>
<BLOCKQUOTE>
<TABLE>
<TBODY>
<TR>
<TD
noWrap><STRONG>SELECT</STRONG> acct, type, bal <STRONG>INTO</STRONG> ... <EM>-- causes compilation error</EM>
</TD></TR></TBODY></TABLE></BLOCKQUOTE>
<P>为了避免发生这样的错误,就需要把字段名用双引号夹起来: </P>
<BLOCKQUOTE>
<TABLE>
<TBODY>
<TR>
<TD
noWrap><STRONG>SELECT</STRONG> acct, "TYPE", bal <STRONG>INTO</STRONG> ...
</TD></TR></TBODY></TABLE></BLOCKQUOTE>
<P>要注意的是,字段名不能采用小写或大小写混合的形式(CREATE
TABLE语句中除外)。例如,下面的语句是无效的: </P>
<BLOCKQUOTE>
<TABLE>
<TBODY>
<TR>
<TD
noWrap><STRONG>SELECT</STRONG> acct, "type", bal <STRONG>INTO</STRONG> ... <EM>-- causes compilation error</EM>
</TD></TR></TBODY></TABLE></BLOCKQUOTE>
<P>还有一种做法就是可以建立视图来为原来的字段名更换一个新名。 </P>
<P class=title2>3、文字</P>
<P>文字就是一个数字、字符、字符串或布尔(Boolean)值。它本身是数据而不是对数据的引用,如数字147和布尔值FALSE都是文字。
</P>
<UL>
<LI>数字文字 </LI></UL>
<P>在算术表达式中有两种数字文字可以使用:整数和实数。整数文字不带小数点,有一个可选的符号,例子如下:
</P>
<BLOCKQUOTE>
<TABLE>
<TBODY>
<TR>
<TD
noWrap>030 6 -14 0 +32767
</TD></TR></TBODY></TABLE></BLOCKQUOTE>
<P>实数文字带有小数点,也有一个可选的符号,例子如下: </P>
<BLOCKQUOTE>
<TABLE>
<TBODY>
<TR>
<TD
noWrap>6.6667 0.0 -12.0 3.14159 +8300.00 .5 25.
</TD></TR></TBODY></TABLE></BLOCKQUOTE>
<P>PL/SQL把12.0和25.这样的数字都当作实数处理,虽然它们只有整数部分值。 </P>
<P>数字文字不能包含美元符号或是逗号,但可以使用科学记数法。只要在数字后面添加一个E(或e),再跟上一个整数即可(符号可选)。比如下面几个例子:
</P>
<BLOCKQUOTE>
<TABLE>
<TBODY>
<TR>
<TD
noWrap>2E5 1.0E-7 3.14159e0 -1E38 -9.5e-3
</TD></TR></TBODY></TABLE></BLOCKQUOTE>
<P>E代表了十的幂,即权(times ten to tde power
of)。E后面的整数值代表指数。**是幂操作符。 </P>
<BLOCKQUOTE>
<TABLE>
<TBODY>
<TR>
<TD
noWrap>5E3 = 5 * 10**3 = 5 * 1000 = 5000<BR><EM>-- tde double asterisk (**) is tde exponentiation operator</EM>
</TD></TR></TBODY></TABLE></BLOCKQUOTE>
<P>在上面的例子里,小数点向右移动三个位置,而在下面这个例子中,我们把E后面的数字改成-3,就能让小数点向左移动三个位置:
</P>
<BLOCKQUOTE>
<TABLE>
<TBODY>
<TR>
<TD
noWrap>5E-3 = 5 * 10**-3 = 5 * 0.001 = 0.005
</TD></TR></TBODY></TABLE></BLOCKQUOTE>
<P>再举一个例子。如果字符文字的范围不在1E-130到10E125之间,就会产生编译错误: </P>
<BLOCKQUOTE>
<TABLE>
<TBODY>
<TR>
<TD
noWrap><STRONG>DECLARE</STRONG><BR> n <STRONG>NUMBER</STRONG>;<BR><STRONG>BEGIN</STRONG><BR> n := 10E127; <EM>-- causes a 'numeric overflow or underflow' error</EM>
</TD></TR></TBODY></TABLE></BLOCKQUOTE>
<UL>
<LI>字符文字 </LI></UL>
<P>字符文字就是由单引号夹起来的一个单独的字符。字符文字包括PL/SQL字符集中所有的可打印字符:字母、数字、空格和特殊符号。如下例所示:
</P>
<BLOCKQUOTE>
<TABLE>
<TBODY>
<TR>
<TD
noWrap><EM>'Z'</EM>, <EM>'%'</EM>, <EM>'7'</EM>, <EM>' '</EM>, <EM>'z'</EM>, <EM>'('</EM>
</TD></TR></TBODY></TABLE></BLOCKQUOTE>
<P>对于字符文字来说,PL/SQL是大小写敏感的。例如,PL/SQL会把'Z'和'z'当成不同的字符。字符'0'到'9'虽不与整数文字等价,但它们可以被应用于算术表达式中,因为它们会被隐式地转换成整数。
</P>
<UL>
<LI>字符串文字 </LI></UL>
<P>字符值可以用标识符来表示,或是写成字符串文字,字符串文字就是由单引号夹起来的零个或多个字符,如下例所示:</P>
<BLOCKQUOTE>
<TABLE>
<TBODY>
<TR>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -