MySQL
因为过程和函数可能有多个分号,所以下改一下定界符号
mysql> delimiter !
接着创建过程
mysql> create procedure p2(name varchar(32))--定义了一个变量
-> begin
-> insert into test(name) values(name);
-> end
-> !
Query OK, 0 rows affected (1.53 sec)
mysql> call p2('麦兜');
-> !
Query OK, 1 row affected (0.05 sec)[/b]
创建函数
--给定参数查询记录数
mysql> create function f1(d_name varchar(32))
-> returns int
-> begin
-> declare count int;
-> set count=(select count(*)from test where name=d_name);
-> return count;
-> end
-> !
Query OK, 0 rows affected (0.00 sec)[/b]
执行函数
mysql> select f1('abc');
-> !
+-----------+
| f1('abc') |
+-----------+
| 1 |
+-----------+
1 row in set (0.00 sec)
查看内容可特征
mysql> show create procedure test.p1\g
+-----------+-----------------------------------------+-------------------------
--------------------------------------------------------+
| Procedure | sql_mode | Create Procedure
|
+-----------+-----------------------------------------+-------------------------
--------------------------------------------------------+
| p1 | STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER | CREATE DEFINER=`root`@`l
ocalhost` PROCEDURE `p1`()
begin
select *from test;
end |
+-----------+-----------------------------------------+-------------------------
--------------------------------------------------------+
1 row in set (0.00 sec)
mysql> show function status like 'f1'
-> !
+------+------+----------+----------------+---------------------+---------------
------+---------------+---------+
| Db | Name | Type | Definer | Modified | Created
| Security_type | Comment |
+------+------+----------+----------------+---------------------+---------------
------+---------------+---------+
| test | f1 | FUNCTION | root@localhost | 2008-08-11 17:35:59 | 2008-08-11 17:
35:59 | DEFINER | |
+------+------+----------+----------------+---------------------+---------------
------+---------------+---------+
1 row in set (0.00 sec)
[/b]
创建触发器
语法
CREATE TRIGGER trigger_name trigger_time trigger_event
ON tbl_name FOR EACH ROW trigger_stmt
创建
--如果年龄在16岁以下,则改为16
mysql> create trigger t1 before insert on test for each row
-> begin
-> if new.age then
-> set new.age=16;
-> end if;
-> end
-> !
Query OK, 0 rows affected (0.00 sec)[/b]
MSSQL
过程
create table test(
id int primary key,
name varchar(32)
);
create proc p1--@d_name为输入参数,@count为输出参数
@d_name varchar(32),
@count integer output
as
select @count= count(*) from test where name=@d_name
--执行
begin
declare @count integer
exec p1 '麦兜',@count output
print @count
end
简单的过程调用游标
create proc pro1
as
begin
declare cur1 cursor for select name from t1
open cur1
declare @thisname varchar(32)
fetch next from cur1 into @thisname
while @@fetch_status=0------------------运行正常
begin
print @thisname
fetch next from cur1 into @thisname
end
close cur1--------------关闭
deallocate cur1---------回收资源
end
exec pro1----执行过程
触发器
use db
go
if exists(select *from sysobjects where name='tri_setting' and type='tr')
drop trigger tri_setting
go
create trigger tri_settingon settings for update as
begin
declare @settingid int,
@settingname varchar(32),
@settingstring varchar(32),
@settinginteger varchar(32);
select @settingid=settingid,@settingname=settingname,@settingstring=settingstring,@settinginteger=settinginteger
from inserted;
if @settingname='smtprelayer'
begin
update hm_mailbox set sendmailserver =@settingstring ;
end
else if @settingname='smtprelayerusessl'
begin
update hm_mailbox set sendmailserverssl =@settinginteger ;
end
else if @settingname='smtprelayerport'
begin
update hm_mailbox set smtpport =@settinginteger;
end
else if @settingname='smtprelayerusername'
begin
update hm_mailbox set sendmailserverssl =@settingstring;
end
else if @settingname='smtprelayerpassword'
begin
update hm_mailbox set smtpsafepassword =@settingstring ;
end
end
--update hm_settings set settingstring ='100~~~~~' where settingname='smtprelayer';
--------------------------------
/*触发器2*/
if exists(select *from sysobjects where name='tri_domains' and type='tr')
drop trigger tri_domains
go
create trigger tri_domains on maildomain for update as
begin
declare @maildomainid int,
@maildomainname varchar(50)
select @maildomainid=maildomainid,@maildomainname=maildomainname from inserted;
declare c1 cursor for select userid, maildomainid,emailaddress from hm_mailbox where maildomainid=@maildomainid;
declare @c_userid int,@c_maildomainid int,@c_maildomainname varchar(50);
open c1;
fetch next from c1 into @c_userid,@c_maildomainid,@c_maildomainname;
while( @@Fetch_Status=0 )
begin
if charindex('@',@c_maildomainname)>0
update hm_mailbox set emailaddress=left(@c_maildomainname,charindex('@',@c_maildomainname))+@maildomainname where userid=@c_userid;
fetch next from c1 into @c_userid, @c_maildomainid,@c_maildomainname;
end
close c1;
deallocate c1;
end
--update hm_maildomain set maildomainname='126.com' where maildomainid=5;
Oracle
触发器
create or replace trigger tri_person_tr1
before insert or update on person
for each row
when (new.age < 19)
begin
:new.age := 19;
end;
函数
create or replace function totalnum(firstindex in number,
lastindex in number) return number is
totalnum number;
begin
select count(*)
into recordnum
from (select *
from (select rownum num, o.* from orders o) s
where s.num between firstindex and lastindex);
end totalnum;
几个
分享到:
相关推荐
db2look 是一个 DB2 命令行工具,用于生成数据库对象的 DDL 脚本。使用 db2look,我们可以导出数据库结构,例如表结构、索引、视图等。 语法:db2look -d db_name -e -a -x -i db_username -w db_passwd -o file_...
2. **对象持久化**: 要保存一个对象,你只需要创建该对象,然后使用`database.store()`方法将其存入数据库。Db4o会自动跟踪对象的所有变化,并在下次调用`store()`时更新它们。 3. **对象检索**: Db4o提供了一种...
在提供的压缩包中,有两个重要的JAR文件:db2jcc.jar和db2jcc_license_cu.jar。 db2jcc.jar是IBM DB2 JDBC类型的4 Universal Driver实现,它包含了所有必要的类和资源,使得Java应用程序能够建立到DB2服务器的网络...
在压缩包子文件的文件列表中,我们看到以下几个文件: 1. **Db4oExplorer.2010.sln**:这是一个Visual Studio解决方案文件,通常包含了一个或多个项目,用于开发和构建DB4O管理工具。开发者可以使用此文件来打开、...
在实际应用中,使用C#链接DB2通常涉及以下几个关键知识点: 1. **安装DB2 OLEDB驱动**:首先,需要在开发环境中安装IBM Data Server Provider for .NET,这包含了DB2OLEDB驱动,使得C#能够识别和连接到DB2数据库。 ...
此外,事务管理是数据库操作中的重要部分,`Connection`对象的`commit()`和`rollback()`方法用于提交或回滚事务。 总的来说,DB2数据库驱动jar包是Java开发者与DB2数据库交互的基础,理解和正确使用这些驱动对于...
使用这两个文件的过程通常包括以下几个步骤: 1. **配置环境变量**:在Java应用中,你需要将`db2jcc.jar`和`db2jcc_license_cu.jar`添加到类路径(classpath)中。这可以通过设置`JAVA_HOME/jre/lib/ext`目录或者在...
绑定是DB2中一个重要的过程,涉及到将源代码中的引用与实际数据库对象相连接。这一步骤确保了应用程序能够正确地访问和操作数据库中的数据。绑定过程还涉及到编译和优化SQL语句,以提高执行效率。 通过深入理解DB2 ...
下面,我们将深入探讨几个典型的DB2错误码,以及它们所指示的具体问题。 ### 00000 - SQL语句成功完成 这是最理想的错误码,表示SQL语句执行成功,没有遇到任何问题。当看到这个错误码时,可以确认数据库操作按照...
DB2通过目录来管理远程数据库的信息,主要包括以下几个命令: - **db2 catalog tcpip node**:用于添加一个远程节点到DB2目录中。 - 命令格式:`db2 catalog tcpip node node_name remote_hostname server service...
4. **事件驱动**:db40提供了一套事件监听机制,可以在对象存取时触发相应的事件,便于实现业务逻辑和数据验证。 5. **版本控制**:db4o支持对象的历史版本记录,可以回溯到对象的任意历史状态。 6. **分布式数据...
本文将详细介绍几个常用的DB2命令及其作用。 1. **db2start** 和 **db2stop** - `db2start` 用于启动DB2数据库管理实例。它不是启动单个数据库,而是启动整个DB2服务,使得所有已配置的数据库实例都可以使用。 - ...
这篇博客主要讨论了DB2中的一些常用命令语句,对于理解和操作DB2数据库至关重要。在深入讲解这些命令之前,我们先来了解DB2的基础知识。 1. **安装与启动DB2** 在安装DB2后,可以通过`db2start`命令启动数据库服务...
总的来说,db2jcc4.jar是连接Java应用到DB2数据库的关键组件,其兼容性、下载途径以及正确使用方法都是开发者需要了解的重要知识点。通过合理配置和使用,可以确保Java应用顺利地与DB2数据库进行交互。
000-730考试是DB2认证的一部分,通常涵盖以下几个关键知识点: 1. **数据库基础**:包括关系数据库模型的基本概念,如实体、关系、属性和键,以及SQL语言的基础知识,如SELECT语句、表的创建与修改等。 2. **DB2...
在Android上使用DB2,你需要做以下几步: 1. **添加依赖**: `db2jcc.jar`是IBM提供的Java连接器,用于在Java应用中连接DB2数据库。你需要将这个JAR文件添加到你的Android项目的`libs`目录下,并在`build.gradle`...
在使用DB2 .NET驱动进行C#或ASP.NET开发时,需要注意以下几点: 1. 创建DB2Connection对象,指定正确的数据库连接字符串,包括服务器地址、端口、数据库名、用户名和密码。 2. 使用DB2Command对象创建SQL查询或存储...
下面我们将详细探讨几个重要的知识点: 1. **数据库连接**:在易语言中,首先需要建立与数据库的连接。这通常通过指定数据库驱动、服务器地址、数据库名、用户名和密码等信息实现。例如,可以创建一个数据库连接...
这个方法接收一个SQL查询字符串作为参数,并返回一个`ResultSet`对象。例如: ```java ResultSet rs = state.executeQuery("SELECT * FROM SAPWLQ.LIKP WHERE VBELN='1000091594' OR VBELN='1000091595'"); ``` ...
从提供的文件内容中,我们可以识别几个关键知识点: 1. 在配置数据源之前,需要注意阅读文档的“注意事项”部分,这通常包含了重要的信息和警示,确保用户在使用该产品时了解可能的风险和限制。 2. DB2的资料还...