熟悉SQL SERVER的话,肯定常用到BEGIN TRAN和COMMIT TRAN语句。但在ORACLE中并没有这种类似的事务控制语句,ORACLE当然有事务,不然也不会是最牛X的数据库服务器软件了。下面简单的介绍下ORACLE的事务机制。
在ORACLE中采用隐式事务,既然是隐式事务,显然是不需要COMMIT TRAN语句了,但COMMIT还是要的。
在默认情况下,ORACLE对每次查询中对表的修改都是有隐式事务的,直到执行到COMMIT;或ROLLBACK;时提交或回滚事务。
下面附上一段在PHP中一条语句操作多个表的解决办法。OCI_DEFAULT模式将默认为每次查询产生一个事务。
$sql = ‘BEGIN
UPDATE TEST_A SET COLUMN_A = 1 WHERE ROWNUM = 1;
UPDATE TEST_B SET COLUMN_B = 2 WHERE ROWNUM =1;
END;’;
$conn = oci_connect(’scott’, ‘tiger’, ‘orcl’);
$stmt = oci_parse($conn, $sql);
oci_execute($stmt, OCI_DEFAULT);
// 回滚事务,返回boolean值
$rollbacked = oci_rollback($conn);
// 提交事务,返回boolean值
$commited = oci_commit($conn);
实例完毕,谢谢收看CCTV。
第一步,下载Instant Client for Microsoft Windows (32-bit)
下载地址:http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/winsoft.html
下载和数据库版本一至的Instant Client,本机是10g r2所以选择Version 10.2.0.4
安装:
1.直接解压到一个目录,本机是:D:\WareSoft\instantclient_10_2
2.设置环境变量
在PATH变量后追回D:\WareSoft\instantclient_10_2
新建TNS_ADMIN变量,值为:D:\WareSoft\instantclient_10_2
新建LD_LIBRARY_PATH变量,值为:D:\WareSoft\instantclient_10_2
新建NLS_LANG变量(连接字符集,本机是UTF-8),值为:SIMPLIFIED CHINESE_CHINA.AL32UTF8
3.创建链接配置文件
新建文件,命名为:tnsnames.ora,放到D:\WareSoft\instantclient_10_2下,内容示例:
192.168.1.105 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.105)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = XE)
)
)
内容说明:
192.168.1.105(链接别名) =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.105(服务器IP))(PORT = 1521(服务端口)))
)
(CONNECT_DATA =
(SERVICE_NAME = XE(服务端口,rpm版的为XE,tar版的是ORCL)
)
)
Oracle可以免费使用
Oracle 10G R2下载地址:
http://www.oracle.com/technology/global/cn/software/products/database/xe/htdocs/102xelinsoft.html
下载通用版(含语言包的) : oracle-xe-univ-10.2.0.1-1.0.i386.rpm
rpm包无法设置安装路径,如果一定要设置选译tar.gz的
下载后打开命令行:
[root@localhost ~]# cd /opt/download/
[root@localhost download]# rpm -ivh oracle-xe-univ-10.2.0.1-1.0.i386.rpm
一直回车,输入SYSTEM密码,安装成功。
默认数据库端口是1521,默认HTTP管理端口是8080,HTTP管理地址:http://127.0.0.1:8080/apex
安装完成,现在可以去http://127.0.0.1:8080/apex爽一把了
把下面的TableName改成自己的表名,0是设置自增值是多少
DBCC CHECKIDENT(TableName, RESEED, 0)
Navicat是个比较牛x的工具,但在导出包含中文的Text字段时会不能正确的将中文转成十六进制,导致了这个字段全部乱码,找了所有的设置项都没发现有关此设置,只有做罢,用SQLYog代替其导出数据库~,无奈中。。。
concat函数提供将一些字符连接到一起的功能。
简单的测试一下输入sql命令:
select concat(’aaa’,'bbb’,'ccc’)
看看得出的结果是不是 aaabbbccc
还可以将concat应用于模糊搜索
select * from tablea where concat(title, subject, content) like ‘%keyword%’
这样一来简化了sql语句,第二是搜索的范围小了、速度快