有没有办法在sqlplus中回显/打印当前连接字符串?我有一个将在多个数据库中运行的脚本,我想在顶部看到一行:
Currently executing test_script.SQL as USER1@MY_DB
如果有一种方法可以做到这一点,而不必更改文件本身,这将是非常方便的.
1:名称varchar2(30):='uu'|| '&(emp name)';
2:名称varchar2(30):='uu'|| '&emp name';
我不知道差异()是什么.
在第一种情况下,name = uu&(emo名称和
第二种情况,它促使用户输入值.
请任何机构解释我这背后的概念.
我有一个使用声明游标的SQL文件,我使用@abc运行它,但它没有执行所有语句并等待而不返回命令提示符.声明游标语句后它没有继续.当我尝试在命令模式下运行declare cursor语句时,再次发生同样的问题.我只能在按Ctrl + C后返回SQL priompt.我对SQL世界很新.虽然这可能是一个基本错误,但我无法在任何网站找到解决方案.任何帮助是极大的赞赏.
SQL> DECLARE CURSOR id_cursor IS SELECT id FROM user_names WHERE dept_no = 1002
AND BITAND(flags, 4) = 4 AND time_created BETWEEN 1137974400 AND 1326067199;
2
3
4 ;
5
6
Run Code Online (Sandbox Code Playgroud) 我想在我的oracle db中禁用存档日志.但是当我关机并尝试安装数据库时,我收到以下错误.
C:\>sqlplus scott/tiger@ORCL as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on Tue Sep 18 10:44:17 2012
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORA-12514: TNS:listener does not currently know of service requested in connect
descriptor
SQL> startup mount
ORA-24324: service handle not initialized
ORA-01041: internal …Run Code Online (Sandbox Code Playgroud) 我试图使用sqlplus和Oracle假脱机功能导出一些数据.问题是我定义导出的SQL输入文件不允许我参数化我从中导出数据的表名 - 它想要一个文字:(
在shell脚本中调用sqlplus:
sqlplus $USER/$PASSWD@$ORADB<<!
@export.sql $OUT_FILE $SOME_VAR $ENV
exit
!
Run Code Online (Sandbox Code Playgroud)
export.sql:
set heading off
set head off
set term off
set tab off
set embedded on
set feedback off
set pagesize 0
set linesize 800
set trimspool on
set verify off
spool &1
SELECT '&2|' || some_col
FROM &3_TABLE
/
spool off
Run Code Online (Sandbox Code Playgroud)
当$ ENV设置为'dev'时,我明白了
Enter value for 3_TABLE
Run Code Online (Sandbox Code Playgroud)
而我希望它使用dev_TABLE.当我取消参数化sql文件中的表名时,输出运行正常.另请注意,有一个param&2,它是来自shell的$ SOME_VAR,它显示得很好.唯一的问题是在FROM语句中.
有没有办法告诉sql输入文件在运行SQL之前替换参数化表名?
谢谢
&nOracle PL/SQL中的这个声明是什么意思?代码示例中的用法(取自此处)如下所示:
DECLARE
myex EXCEPTION;
PRAGMA EXCEPTION_INIT(myex,-20015);
n NUMBER := &n;
BEGIN
FOR i IN 1..n LOOP
dbms_output.put.line(i);
IF i=n THEN
RAISE myex;
END IF;
END LOOP;
EXCEPTION
WHEN myex THEN
dbms_output.put.line('loop is end');
END;
Run Code Online (Sandbox Code Playgroud) 我试图理解一个简单的脚本,它使用unix中的sqlplus命令连接到Oracle数据库:
1 sqlplus -s /nolog > /dev/null 2>&1 <<EOF
2 whenever sqlerror exit failure
3 connect $user_pwd
4 exit success
5 EOF
Run Code Online (Sandbox Code Playgroud)
如果我正在使用unix,那么我使用命令sqlplus $user_pwd连接到oracle数据库并且sqlplus使用命令exit.请帮助我理解1,2,4,5行.对于专家来说这可能是一个简单的问题,但我无法理解何时使用这些问题.
我想在oracle中获取仅外部表的列表.我试图使用Select*from选项卡获取列表.但它返回所有表的列表,包括实际和外部.但我只想要外部表的列表
我有一个下面的测试ksh文件
#!/bin/ksh
(
sqlplus -s << EOF
${DATABASE}
SET SERVEROUTPUT ON;
SET HEAD OFF
SET FEED OFF
SET DEFINE OFF
SET PAGES 0
SET COLSEP ";"
WHENEVER SQLERROR EXIT SQL.SQLCODE
SELECT 'aaaa vvvv cccc' FROM DUAL;
EXIT
EOF
) | while read sql_out
do
echo ${sql_out}
done
Run Code Online (Sandbox Code Playgroud)
预期的产出是
aaaa vvvv cccc
Run Code Online (Sandbox Code Playgroud)
但观察到的输出是
aaaa vvvv cccc
Run Code Online (Sandbox Code Playgroud)
Sqlplus正在从我的输出中删除额外的空格,我想保留它.
我刚刚开始学习Oracle SQL。我想将两列numeric数据类型划分为一个整数。我想在表或float数据类型中创建一个新列,将现有numeric列除以整数,然后将其值放入该float列中。我将这段代码用于除法和更新部分:
update Student set AVERAGE = TOTAL/3;
Run Code Online (Sandbox Code Playgroud)
在这里,TOTAL是numeric列,AVERAGE是float。但是当我使用以下命令打印表格时:
select * from Student;
Run Code Online (Sandbox Code Playgroud)
,AVERAGE显示为除法的舍入值。我尝试了两种在互联网上找到的解决方案:
update Student set AVERAGE = (TOTAL*1.00)/3;
Run Code Online (Sandbox Code Playgroud)
和:
update Student set AVERAGE = cast(TOTAL as float(2))/3;
Run Code Online (Sandbox Code Playgroud)
但是两者都不起作用。我究竟做错了什么?这是我得到的输出:
ROLL_NO SNAME MATHS CHEM PHY TOTAL AVERAGE
---------- --------------- ---------- ---------- ---------- ---------- ----------
101 abcd 56 68 80 204 70
102 efgh 81 78 70 229 80
103 ijkl 69 73 …Run Code Online (Sandbox Code Playgroud)