频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

用SQLJ开发数据库

来源:yesky 作者:郑伟 出处:巧巧读书 2005-11-29 进入讨论组
上一页 1 2 3 4 5 6 
谢 谢 收 藏 http://www.qqread.com/sqlserver/d222106005.html
可执行语句

  可执行的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 
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章