您现在的位置是: 软件 > 开发者网络 > 程序方舟 > 开发专栏 > 网络数据库 > 正文


-Visual C++ MFC/ATL开发
-Visual C++ 数据库开发
-打开闪烁的新世界:体验Flash MX
-文字在平面设计中的运用

用SQLJ开发数据库
2002-04-10· ·郑伟··yesky

上一页  1 2 3 4 5 6  

  可执行语句

  可执行的SQLJ语句在一对大括号内包含了静态的SQL操作。有两种可能的可执行语句,由SQL是否回来一个值来决定。下面是一个不返回值的嵌入式SQL语句的例子;它在Emp表的Ename列和Sal列上创建一个复合索引∶

#sql { create index EMP_ENAME_SAL on Emp(Ename, Sal) };

  如果一个嵌入式SQL语句返回值的话,你需要使用一个主机变量来指定结果应该放在什么地方。在本例子中,调用PL/SQL函数getSalary返回雇员号Empno为7900的雇员的工资。你可以使用VALUES或者SET运算符来调用函数;也就是说,

int salary;
int empNo = 7900;
#sql salary = { VALUES getSalary(:empNo} };
or
#sql { SET :salary = getSalary(:empNo) };

  主机表达式

  在上面的例子中,我们可以看到,主机变量允许SQLJ程序在数据库和Java程序之间交换信息。它们是任何在Java程序中声明的变量。主机变量被嵌入到SQLJ语句里,称作主机表达式。主机表达式把主机变量绑定在SQLJ可执行语句上,它们也可能包括Java数组元素,对象属性或者Java函数。SQLJ负责在SQL和Java环境之间来回移动数据。所有的标准JDBC类型-象Boolean,byte,short,int,String,byte [],double,float,java.sql.Date等等。—都是SQLJ中有效的主机表达式。此外,Oracle的SQLJ翻译器支持使用Oracle数据库类型,例如ROWID,CLOB,BLOB和Object以及REF类型。在本文中,我讨论了编写实际的SQLJ代码所必需用到的SQLJ对象类型:连接上下文,命名和位置迭代程序,可执行语句和主机表达式。在以后的文章里,我想编写一个服务器端SQLJ程序,编译它,然后把它配置进Oracle JServer并把它PL/SQL对应的程序进行性能上的比较。

代码段1
public static void listEmployees(String empSalary)
throws SQLException {
EmpIteratorClass empIterator;
Integer salary = new Integer(empSalary);
try {
#sql empIterator = {
select Ename, Job, HireDate
from Emp
where Sal > :salary
};
while (empIterator.next()) {
System.out.println("Name: " + empIterator.Ename());
System.out.println("Job: " + empIterator.Job());
System.out.println("Hire Date:" +
empIterator.HireDate().toString());
}
empIterator.close();
} catch (SQLException e) {
System.err.println("SQLException" + e);
System.exit(1);
}
}
代码段2
public static void listEmployees(String empSalary)
throws SQLException {
EmpIteratorClass empIterator;
Integer salary = new Integer(empSalary);
/*主机变量 */
String name = null;
String job = null;
Timestamp hireDate = null;
try {
#sql empIterator = {
select Ename, Job, HireDate
from Emp
where Sal > :salary
};
while (true) {
#sql { FETCH :empIterator INTO :name, :job, :hireDate };
if (empIterator.endFetch()) {
break;
}


System.out.println("Name: " + name);
System.out.println("Job: " + job);
System.out.println("Hire Date:" + hireDate().toString());
}
empIterator.close();
} catch (SQLException e) {
System.err.println("SQLException" + e);
System.exit(1);
}
}

 

上一页  1 2 3 4 5 6  

【责任编辑:方舟】
【发表评论】【关闭窗口】
■ 相关内容
 Oracle变幻“金色中国”
 在ASP中使用Oracle数据库
 Oracle发动中国攻略 新建研发中心欲招百名员工
 裸设备和Oracle问答20例
 Oracle降低电子商务软件价格
 基于Oracle9i的服务器性能评测
 通过JDBC连接oracle数据库的十大技巧
 Oracle 数据库操作技巧集
 oracle去除别名的方法
感谢 访问天极网,如果您觉得该文章涉及版权问题,请看这里!