在*.SQL文件里获取并使用变量
熟悉Oracle SQL语法的人可能都知道在*.sql文件里可以用&1、&2、... &9 ... 变量名称去获取并使用变量。
以scott用户, 举例如下:
在C盘的根目录下写一个SQL文件 c:\sql1.sql
select empno,ename,job,sal from emp where deptno=[$1 and sal>&2]
在SQL*PLUS下带参数调用 c:\sql1.sql
SQL> c:\sql1.sql 20 1500
输入被截为66个字符
原值 1: select empno,ename,job,sal from emp where deptno=&1 and sal>&2
新值 1: select empno,ename,job,sal from emp where deptno=20 and sal>1500
EMPNO ENAME JOB SAL
----- ---------- --------- ----------
7369 SMITH CLERK 2000
7566 JONES MANAGER 2975
7788 SCOTT ANALYST 3000
SQL> c:\sql1.sql 10 2000
输入被截为66个字符
原值 1: select empno,ename,job,sal from emp where deptno=&1 and sal>&2
新值 1: select empno,ename,job,sal from emp where deptno=10 and sal>2000
EMPNO ENAME JOB SAL
---------- ---------- --------- -----
7782 CLARK MANAGER 2450
7839 KING PRESIDENT 5000
但是这种获取并使用变量的方法不太方便,变量名必须按出现的顺序以1,2,3,......来命名,相同变量也要传递多次, 还有一定的数量限制。
有时我们要获取系统内已有的参数或者固定格式的系统时间,就要采取另一种方法:
比如以system用户,查看数据库物理文件的具体信息 c:\sql2.sql
column db_block_size new_value blksz noprint;
select value db_block_size from v$parameter where name='db_block_size';
column tablespace_name format A16;
column file_name format A60;
set linesize 160;
select file_name,round(bytes/(1024*1024),0) as total_space,autoextensible,
increment_by*&blksz/(1024*1024) as increment,maxbytes/(1024*1024) as maxsize
from dba_data_files order by tablespace_name;
说明:column db_block_size new_value blksz noprint;
把查询出来的db_block_size赋值到变量blksz, 这样出现多次的&blksz变量都可以被一个系统内已有的参数值所替换。
类似的,可采用如下的方法获取固定格式的系统时间:
比如查询前一天订单的数量,并生成操作系统下的文件 c:\sql3.sql
column yesterday new_value checkdate noprint;
select to_char(sysdate-1,'yyyy-mm-dd') yesterday from dual;
spool c:\[$checkdate..txt]
select count(*) from orders
where ordertime>=to_date('&checkdate','yyyy-mm-dd')
and ordertime<to_date('[$checkdate','yyyy-mm-dd')+1]
spool off;
分享到:
相关推荐
为了在Java应用程序中实现对上述两种工具的调用,可以使用Java的`Runtime.getRuntime().exec()`方法来执行外部命令。这种方法允许Java程序通过调用操作系统命令来执行特定任务。 ##### 3.1 备份数据库 下面是一个...
在Java编程中,调用MySQL命令来导入和导出数据库是一种常见的操作,这涉及到数据库管理、数据迁移或者备份恢复等场景。在这个过程中,Java通过JDBC(Java Database Connectivity)接口与MySQL进行交互,利用MySQL...
ARJ是一款古老的但依然实用的文件压缩软件,它支持多种压缩格式,并且可以通过命令行界面操作,非常适合在批处理脚本中使用。在配置"autobackup.bat"时,你需要明确ARJ.exe的完整路径,确保批处理文件在运行时能正确...
在Java项目中使用SQL Server JDBC驱动,需要将对应的jar文件添加到项目的类路径中。如果你使用的是IDE如Eclipse或IntelliJ IDEA,可以通过右键点击项目,选择“Build Path” -> "Configure Build Path" -> ...
存储过程中使用了动态SQL语句来执行备份和恢复操作,而这些操作都建立在与系统数据库master的连接上。 为了实现这些功能,Delphi开发环境中的窗体设计变得非常重要。开发者需要在窗体中添加ADOConnection控件,以...
在这里,`-h` 参数用来指定数据库服务器的地址(对于本地数据库,通常使用 `localhost`),`-U` 参数用来指定用于连接数据库的用户名,`<databasename>` 是要备份的数据库名称,而 `>` 符号后面的 `<backupfile>` 是...
- 支持在程序中使用变量,便于管理和维护代码。 #### 四、测试与调试 1. **创建测试脚本** - 快速构建测试用例,确保程序逻辑正确无误。 2. **运行测试脚本** - 在IDE内部直接运行测试脚本,查看执行结果。 3. *...
在Java编程环境中,实现MySQL数据库备份通常涉及到操作系统命令行调用和文件操作。这段代码提供了一个名为`MySQLDatabaseBackup`的类,该类包含了将MySQL数据库导出为SQL文件的功能。下面将详细解释这个过程: 1. *...
本文档主要介绍了如何配置SQL Server 2000数据库以实现异地自动备份,并在备份完成后删除超过15天的旧备份。这一过程涉及到了数据库的存储过程、作业以及Transact-SQL语句的使用。 首先,我们需要两台运行Windows ...
在MS SQL Server中,数据库备份和恢复是维护数据安全与完整性的关键操作。本文将详细介绍如何使用存储过程来实现这两个功能。 首先,我们来看备份数据库的存储过程`pr_backup_db`。这个存储过程用于创建一个数据库...
Oracle数据库定时自动备份对于保障数据安全至关重要,尤其是在Windows环境下,通过批处理脚本可以实现这一功能。以下是一个详细的Oracle数据库定时自动...确保定期备份并妥善保管备份文件是防止数据丢失的重要措施。
2. **变量使用**:在SQL Server中,局部变量通常以"@"开头,例如@Myvar,用于存储和处理局部范围内的数据。 3. **主键概念**:主键是表中唯一标识实体的字段,它可以创建唯一的索引,但不一定允许空值。一个表只能...
首先,我们需要创建一个T-SQL脚本来生成数据库备份文件,并确保文件名包含日期和时间戳,这有助于管理和追踪备份文件。下面是一个示例脚本,用于生成带有日期时间戳的备份文件名: ```sql -- 创建T-SQL脚本 DECLARE...
在给定的文件中,我们看到了两个PHP文件,`Mydb.php` 和 `Bakeup.php`,它们是用于MySQL数据库的备份和恢复操作的。这些文件主要使用PHP的MySQL扩展来与数据库交互。下面将详细解释其中涉及的知识点: 1. **...
- **finalize**: 对象被垃圾回收之前调用的方法,用于释放资源,但在Java 9之后已废弃。 **6. 运行时异常与一般异常的异同** - **运行时异常**: 通常是由程序错误导致的异常,比如空指针异常。 - **一般异常**: ...
然后,它调用mysqldump来创建数据库的SQL备份文件,文件名包含了当前日期以便区分不同的备份。最后,使用内置的FTP命令行工具上传备份文件到指定的FTP目录。 在执行此脚本之前,确保MySQL已经正确安装并在系统环境...
标题中的“Kettle循环执行动态SQL”指的是使用Pentaho Data Integration(Kettle)工具来设计数据集成工作流,其中包含动态生成并执行SQL语句的步骤。在数据处理和ETL(Extract, Transform, Load)过程中,动态SQL是...