SHELL和DB都熟悉的兄弟看一下,这个应该怎么办?

[复制链接]
查看11 | 回复2 | 2009-9-27 10:21:20 | 显示全部楼层 |阅读模式
不知道这个&&表示什么?

cat test1.sh
#!/bin/sh
L_OUT=/home/db/test/$$.log
sqlplus -s 1>&2 >> /dev/nullselect ename,sal from emp where deptno=&no and job='&job';
输入 no 的值:20
输入 job 的值:CLERK
原值1: select ename,sal from emp where deptno=&no and job='&job'
新值1: select ename,sal from emp where deptno=20 and job='CLERK'
(2)&&
该标号类似于单个&标号。但需要注意,&标号所定义的替代变量只在当前语句中起作用;而&&标号所定义的变量会在当前sql*plus环境中一直生效。eg:
SQL> select ename,sal from emp where deptno=&&no and job='&&job'--定义了no变量
输入 no 的值:20
输入 job 的值:CLERK
原值1: select ename,sal from emp where deptno=&&no and job='&&job'
新值1: select ename,sal from emp where deptno=20 and job='CLERK'
SQL> select ename,sal from emp where deptno=&no;
原值1: select ename,sal from emp where deptno=&no
--直接引用no变量
新值1: select ename,sal from emp where deptno=20
ENAME
SAL
---------- ----------
SMITH
800
JONES
2975
SCOTT
3000
ADAMS
1100
FORD
3000
如例所示,当第一次引用no变量时,使用&&标号需要为其输入数据;当第二次引用no变量时,
使用&标号直接引用其原有值,而不需要输入数据。
(3)define
该命令用于定义类型为char的替代变量,而且该命令的定义的替代变量只在当前sql*plus环境中起作用。当使用该命令定义变量时,如果变量值包含空格或区分大小写,则用引号引注。另外,使用"define变量名"可以检查变量是否已经定义。eg:
sql>set verify off
sql>define title=CLERK
sql>select ename,sal from where job='&title';
(4)accept
该命令可以用于定义char,number和date类型的替代变量。与define命令相比,accept命令更加灵活。当使用该命令定义替代变量时,还可以指定变量输入提示、变量输入格式、隐藏输入内容。
eg1:指定变量输入提示
SQL> accept title prompt '请输入岗位:'
请输入岗位:CLERK
SQL> select ename,sal from emp where job='&title';
原值1: select ename,sal from emp where job='&title'
新值1: select ename,sal from emp where job='CLERK'
ENAME
SAL
---------- ----------
SMITH
800
ADAMS
1100
JAMES
950
MILLER 1300
eg2:隐藏用户输入
sql>accept pwd hide
(5)undefine
该命令用于清除替代变量的定义。eg:
sql>undefine pwd
SQL> disc(断开当前的会话, 但并不推出SQL*Plus)
从 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options 断开
SQL> conn scott/&pwd
输入 pwd 的值:yhai1981
已连接
(6)prompt的pause
prompt命令用于输出提示信息,而pause命令则用于暂停脚本执行。在sql脚本中结合使用这两条命令,可以控制sql脚本的暂停的执行。假定在a.sql脚本中包含以下命令:
prompt '按键继续'
pause
当运行该sql脚本时,会暂停执行,eg:
sql>@c:\a.sql
'按键继续'
(7)variable
该命令用于在sql*plus中定义绑定变量。当在sql语句或pl/sql块中引用绑定变量时,必须要在绑定变量前加冒号(

;当直接给绑定变量赋值时,需要使用execute命令(类似于调用存储过程).示例如下:
sql>var no number
sql>exec :no:=7788
sql>select ename from emp where empno=:no;
ename
------------------
scott
(8)print
该命令用于输出绑定变量结果,eg:
SQL> print no
NO
----------
7788
回复

使用道具 举报

千问 | 2009-9-27 10:21:20 | 显示全部楼层
&&1 应该指参数
$L_OUT
没有测试,仅仅是我的猜测。
回复

使用道具 举报

千问 | 2009-9-27 10:21:20 | 显示全部楼层
局部变量&和全局变量&&
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行