PL/SQL学习笔记二
1.常量
定义语法格式:
常量名 constant 类型标识符 [not null]:=值;
如:PI constant number(9):=3.1415;
2.基本数据类型变量
基本数据类型
number 数字型
int 整数型
pls_integer 整数型,产生溢出时出现错误
binary_integer 整数型,表示带符号的整数
char 定长字符型,最大255个字符
varchar2 变长字符型,最大2000个字符
long 变长字符型,最大2GB
date 日期型
boolean 布尔型(true,false,null三者之一)
基本数据类型变量的定义语法格式
变量名 类型标识符 [not null]:=值;
如:myvar varchar2(10):='right';
3.复合数据类型变量
3.1 表字段类型变量(使用%type定义)
变量的类型与数据表中的字段的数据类型一致。当数据库表的字段类型修改后,相应的变量的类型也自动修改。
定义语法格式:变量名 表字段名%type;
如:mydate tempuser.testtable.currentdate%type 定义了名为mydate的变量,其类型与tempuser.testtable表中的currentdate字段类型一致。
3.2 记录类型变量
记录类型定义语法格式:
type 数据类型名 is record(
字段1 类型标识符1,
字段2 类型标识符2,
...
);
记录类型变量定义:
变量名 数据类型名;
如定义记录类型:
type myrecord is record(myrecordnumber int, mycurrentdate date);
定义myrecord类型变量srecord:
srecord myrecord;
访问myrecordnumber字段值:
srecord.myrecordnumber
注意:字段1,字段2等也可以是复合数据类型。
3.3 表记录型变量(使用%rowtype定义)
定义语法格式:变量名 表名%rowtype
变量可以获得整个表记录的数据类型,相当于先定义了一个记录类型,其各字段类型分别对应表的各字段类型;然后再定义这种记录类型的变量
3.4 一维表类型变量
定义语法格式:
type 表类型 is table of 类型 index by binary_integer;
表类型变量名 表类型;
相当定义一维数组,这里的类型可以是前面的类型定义,index by binary_integer子句代表以符号整数为索引,这样访问表类型变量中的数据方法就是“表变量名(索引符号整数)“。
示例:
declare
type tabletype1 is table of varchar2(4) index by binary_integer; --定义一维表类型tabletype1
type tabletype2 is table of tempuser.testtable."recordnumber"%type index by binary_integer; --
相关文档:
http://inthirties.com:90/thread-1202-1-1.html
前面文章 ”v$sql,v$sqlarea,v$sqltext有什么区别“ 见 http://blog.csdn.net/inthirties/archive/2010/03/10/5364777.aspx
这里补充一下
补充:
1、查一下这些视图的定义你就能理解,它们的源都是一个。
SELECT view_definition from v$fixed_view_definiti ......
sql server中如何判断表或者数据库的存在,但在实际使用中,需判断Status状态位:
其中某些状态位可由用户使用 sp_dboption(read only、dbo use only、single user 等)进行设置:
1 = autoclose;使用 sp_dboption 设置。 数据库完全关闭,其资源在最后一个用户注销后释放。
4 = select into/bulkcopy;使用 sp_dbopti ......
--创建链接服务器
exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 '
exec sp_addlinkedsrvlogin 'ITSV ', 'false ',null, '用户名 ', '密码 '
--查询示例
select * from ITSV.数据库名.dbo.表名
--导入示例
select * into 表 from ITSV.数据库名.dbo.表名
--以后不 ......
ALTER procedure [dbo].[sp_lock_check]
@spid1 int = NULL,
@spid2 int = NULL
as
set nocount on
if @spid1 is not NULL
begin
select ......
Select * from t_user_profile where convert ( varchar ( 21 ),regDate, 120 ) like ' 2008-05-07% ' 表名称:t_user_profile 日期字段名称:regDate
Select * from t_user_profile where convert(varchar(21),regDate,120) like '2008-05-07%'< ......