游标(CURSOR)也叫光标,在关系数据库中经常使用,在PL/SQL程序中可以用CURSOR与SELECT一起对表或者视图
中的数据进行查询并逐行读取。
Oracle游标分为显示游标和隐式游标。
显示游标(Explicit Cursor):在PL/SQL程序中定义的、用于查询的游标称作显示游标。
隐式游标(Implicit Cursor):是指非PL/SQL程序中定义的、而且是在PL/SQL中使用UPDATE/DELETE语句时,Oracle系统自动分配的游标。
一.显示游标
1.使用步骤
(1)定义 (2)打开 (3)使用 (4)关闭
2.使用演示
首先创建测试用表STUDENT,脚本如下:
CREATE TABLE "STUDENT" (
"STUNAME" VARCHAR2(10 BYTE),
"STUNO" VARCHAR2(4 BYTE),
"AGE" NUMBER,
"GENDER" VARCHAR2(2 CHAR)
)
(1).使用WHILE ......
1.建立存放字符串的数组类型
create or replace type Type_bind as table OF VARCHAR2(4000)
2.建立将字符串转成数组然后返回给Type_bind函数。
CREATE OR REPLACE FUNCTION F_PUB_BIND_IN(p_bind IN VARCHAR2)
RETURN TYPE_BIND AS
/*
创建时间:2008-8-26
运行周期:
涉及的表:
函数简述:
为了带IN的条件,使用绑定变量, 把字符串转成表类型
入参为()中的值,如:(1,2,3,4)则传入'1,2,3,4'
SELECT * from TABLE(F_PUB_BIND('66561000,62693920')) 也可调用
修改历程:
1.
*/
--往入参的后面加入逗号,便于分割
v_SqlStr LONG DEFAULT p_bind || ',';
--中间变量
v_Tmp NUMBER;
--分割后的值
v_Data TYPE_BIND := TYPE_BIND();
BEGIN
LOOP
v_Tmp := INSTR(v_SqlStr, ',');
EXIT WHEN(NVL(v_Tmp, 0) = 0);
--扩展数组大小 ......
有时候网络发生变动,必须手动修改一下RAC VIP地址,不仅是地址,也可以修改VIP所在的网卡,原则是VIP地址要和PUB地址在同一个网段内,方法其实是比较简单的,有人问到,我给一个示例如下:
1、关闭数据库
srvctl stop database -d db
2、关闭NOTEAPPA
srvctl stop nodeapps -n db2
每个节点上分别以root权限执行,一个节点一个节点执行
修改完成后,修改相应的每个节点本地的侦听lister.ora和tnsname.ora文件对应的IP,然后就是修改IP地址了,下面的例子修改到VIP 到ETH1设备上
db1#./srvctl modify nodeapps -n db1 -A 192.168.1.110/255.255.255.0/eth1
db2#./srvctl modify nodeapps -n db2 -A 192.168.1.210/255.255.255.0/eth1
3、重新启动RAC数据库就可以了
恢复原来的网卡设置
/oracle/product/102/crs/bin/srvctl modify nodeapps -n db1 -A 192.168.1.110/255.255.255.0/eth0
/oracle/product/102/crs/bin/srvctl modify nodeapps -n db2 -A 192.168.1.210/255.255.255.0/eth0 ......
ashx文件是.net 2.0新加的文件类型(其实在.net 1.0下已经可用,但是没有公开提供).
ashx文件和aspx文件有什么不同? 我们先新建一个ashx文件看看:
ashx
<%@ WebHandler Language="C#" Class="Handler" %>
using System;
using System.Web;
public class Handler : IHttpHandler {
public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "text/plain";
context.Response.Write("Hello World");
}
public bool IsReusable {
get {
return false;
}
}
}
看,比aspx简洁多了吧.只有一个文件,没有后台cs文件(基于代码安全考虑,后边我们会自己添加这个文件).ashx对比aspx文件,就好像少了cs文件.其实这就是ashx和aspx不同的地方,因为aspx要将前后台显示和处理逻辑分开,所以就弄成了两个文件,其实,在最终编译的时候,aspx和cs还是会编译到同一个类中去.这中间就要设计html的一些逻辑处理.而ashx不同,它只是简单的对web http请求的直接返回你想要返回的结果.比aspx少处理了html的过程.理论上,比aspx要快.
看看.net config文件中对两个文件类型请求的配置吧
......
在做ajax加载页面时遇到了一个问题,写在被加载页面head里的style标记似乎总是无效。意识到现在是在ie中,于是我转向ff中调试,结果在ff中是有效的。这真是奇怪了,难道ff和ie在加载页面时真会有不同的处理方式吗?这种不同在什么地方呢?
我设法查看ff和ie中加载到浏览器的源代码,(用的alert(document.getElementById('Coll_Detail_Container').innerHTML),这种查看源代码的方式以前还没有用过),发现果然,ff除了会把一个子页面body里的内容加载进来外,head里的内容也会加载,而ie只加载body里的内容。难怪我写在head里的style在ie中没有效果了。
为了使style生效,我把它写在子页面的body中,这样用ajax加载后style果然生效了。 ......
AJAX技术应用详解 收藏
AJAX是Asynchronous JavaScript and XML 的缩写。它并不是一门新的语言或技术,它实际上是几项技术按一定的方式组合在一在同共的协作中发挥各自的作用,它包括:使用XHTML和CSS标准化呈现;使用DOM实现动态显示和交互;使用XML和XSLT进行数据交换与处理;使用XMLHttpRequest进行异步数据读取;最后用JavaScript绑定和处理所有数据。 Ajax的工作原理相当于在用户和服务器之间加了—个中间层,使用户操作与服务器响应异步化。这样把以前的一些服务器负担的工作转嫁到客户端,利于客户端闲置的处理能力来处理,减轻服务器和带宽的负担,从而达到节约ISP的空间及带宽租用成本的目的。
我们以两个验证通行证帐号是否存在的例子来讲述AJAX在实际中的应用:
(1)用文本字符串的方式返回服务器的响应来验证网易通行证帐号是否存在;
(2)以XMLDocument对象方式返回响应来验证金山通行证帐号是否存在;
首先,我们需要用JavaScript来创建XMLHttpRequest 类向服务器发送一个HTTP请求, XMLHttpRequest 类首先由Internet Explorer以ActiveX对象引入,被称为XMLHTTP。 后来Mozilla﹑Netscape﹑Safari 和其他浏览器也提供了XMLHttpRequest类 ......