易截截图软件、单文件、免安装、纯绿色、仅160KB

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


相关文档:

sql中常用动态的行转列

//取出源数据
select groupname,totalnum,inputdate,groupid into #temp from
 (select count(*)as totalnum,p.groupid,g.groupname,convert(nvarchar(10),inputdate,120) as 'inputdate'
 from person p left join admin_group g on p.groupid = g.groupid and deleteflag = '0'
 where p.inactive=' ......

在ORACLE和sql server中简单备份table的方法

如果temp_t1不存在,
oracle:
create table temp_t1
as
select * from t1
sql server:
select * into temp_t1 from t1
如果temp_t1存在,
oracle:
insert into table temp_t1
select * from t1
sql server:
insert into table temp_t1
select * from t1 ......

SQL Server2000中死锁经验总结

   我们在做很多项目时都要涉及到数据库,特别是一些比较大型的web项目,更是有较大的并发处理,所以对数据库的操作有可能会产生死锁,对于数据库的死锁,一般数据库系统都会有一套机制去解锁,一般不会造成数据库的瘫痪,但解锁的过程会造成数据库性能的急速下降,反映到程序上就会造成程序的反应性能的下降,并 ......

SQL SERVER 2005 存储过程

USE AdventureWorks
GO
CREATE PROC spEmployee
AS
SELECT * from Humanresources.Employee
EXEC spEmployee
ALTER PROC spEmployee
AS SELECT EmployeeID from Humanresources.Employee
drop proc spEmployee
ALTER PROC spEmployee
@LastName nvarchar(50) = NULL
AS
IF @LastName IS NULL
SELECT * f ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号