ORACLE PL/SQL子程序
温故而知新,果然如此呀,第二次再翻开同样的内容果然有不同的收获,有些是第一次看的时候没有仔细理解的,还有些可能是在第一次看匆匆就跳过的,当然,可能还有部分是自己当时记住了完了又给忘记了。今天第二次看到子程序这一章节,发现了些新的内容,呵呵。在这里我就写下一些基本内容和容易忘记的,免得下次又给忘了。内容可能不太全面,有点针对我个人哦,呵呵!
1.创建子程序的语法
创建过程
CREATE [OR REPLACE] PROCEDURE procedure_name
[(argument [{IN | OUT| IN OUT}] type,
...
argument [{IN | OUT| IN OUT}] type)]
{IS | AS} --IS和AS没区别
procedure_body
创建函数
CREATE [OR REPLACE] FUNCTION function_name
[(argument [{IN | OUT| IN OUT}] type,
...
argument [{IN | OUT| IN OUT}] type)]
RETURN return_type {IS | AS} --IS和AS没区别
procedure_body
2.参数模式
IN
调用过程的时候,实际参数的值就会传递到该过程中。在过程内部,形式参数就像PL/SQL的常量一样--它会被看作是只读且不能修改的。当过程执行完毕,程序的控制返回到调用环境的时候,实际参数的值不会有任何变化。
OUT
调用过程的时候,会忽略所有实际参数的值。在过程内部,形式参数就像未初始化的PL/SQL变量一样,也会有一个NULL值。形式参数的值既可以读取,也可以写入。过程执行完成以后,控制就会返回到调用环境,同时会将形式参数的值赋给实际参数。
IN OUT
这是IN和OUT的复合模式。调用过程的时候,实际参数的值会传递到过程中。在过程内部,形式参数就像初始化以后的变量,可以读取和写入。过程结束以后,控制会返回到调用环境,同时会将形式参数的内容分配给实际参数。
3.以传值和传引用的方式传递参数
传递子程序参数的方式有两种--传值和传引用。当以引用的方式传递参数的时候,就将指向实际参数的一个指针传递到相应的形式参数。另一方面,当以传值的方式传递参数的时候,就将实际参数的值复制到相应的形式参数。以引用的方式传递参数通常会更快,因为它避免了复制。对集合类型的参数而言,这表现更加明显,因为集合类型的数据一般都非常多。
默认情况下,PL/SQL对IN参数都使用传引用的方式,而对IN OUT和OUT参数都使用传值的方式。
1)NOCOPY的使用方法
parameter_name [mode] NOCOPY datatype
其中parameter_name是参数的名称,mode是参数模式,而datatype
相关文档:
一、下载安装
1、SQL Server 2005 Express Edition
下载 SQL Server 2005 Express Edition(下载页面):
http://msdn.microsoft.com/vstudio/express/sql/download/
安装完数据库后设置ICP/IP协议启动(这一步不能少,默认是TCP/IP不启用的),具体如下:
(1)打开SQL Server Configuration Manager
(2)转到SQL S ......
这里介绍sql server2005里面的一个使用实例:
CREATE TABLE tb(province nvarchar(10),city nvarchar(10),score int)
INSERT tb SELECT '陕西','西安',3
UNION ALL SELECT '陕西','安康',4
UNION ALL SELECT '陕西','汉中',2
UNION ALL SELECT '广东','广州',5
UNION ALL SELECT '广东','珠海',2
UNION ......
SQL Server 几个好用的SQL语句
1、复制表
select * into desttable from srctable
将 srctable 完整地复制一份到 desttable 中,当然后面也可以加上条件来限定需要复制的记录
要求:desttable 必须为不存在的表名。
insert into desttable(column1, column2) select columna, columnb from sr ......
知: 字段A='F:\photo\Winter Leaves.jpg'
要求:分段截取每段字符[字段A不能为TEXT类型,否则报错]
解决方法:
---截取字符串A的第一个\左边的字符串
select left(A,charindex('/',A)-1)
输出结果:F:
---截取\中间的字符串
select left(stuff(A,1,charindex('/',A),''),charindex('/',stuff(A,1,c ......
select gztzid,
gztztt,
gztzbt,
gztznr,
fslxmc,
decode(fsfs, '0', '无需回复', '1', '需要回复') fsfs,
&nb ......