标签: sqlplus

Oracle中TNS_ADMIN变量的用途是什么?

请告诉我在Oracle中使用TNS_ADMIN参数有什么用?我正在使用oracle数据库在Unix上工作.

是否需要此参数来定位sqlplus.我正在执行一个脚本,在该脚本中对Oracle数据库执行更新查询.

使用crontab执行时,脚本失败并显示127错误代码.

我怀疑(eval)失败的脚本内容是

----------
cmd='sqlplus ${ORALOGIN} < SQLS
----------
eval $cmd
Run Code Online (Sandbox Code Playgroud)

unix oracle connection shell sqlplus

4
推荐指数
1
解决办法
1万
查看次数

动态设置Oracle序列的"Start With"值

我正在尝试创建一个可以部署在多个数据库上的发布脚本,但是可以在以后将数据合并在一起.处理此问题的显而易见的方法是在后续部署中将生产数据的序列号设置得足够高以防止冲突.

问题在于提出一个发布脚本,该脚本将接受环境编号并适当地设置序列的"Start With"值.理想情况下,我想使用这样的东西:

ACCEPT EnvironNum PROMPT 'Enter the Environment Number:  '
--[more scripting]
CREATE SEQUENCE seq1 START WITH &EnvironNum*100000;
--[more scripting]
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为您无法在DDL中计算数值表达式.

另一种选择是通过PL/SQL使用动态SQL创建序列.

ACCEPT EnvironNum PROMPT 'Enter the Environment Number:  '
--[more scripting]
EXEC execute immediate 'CREATE SEQUENCE seq1 START WITH ' || &EnvironNum*100000;
--[more scripting]
Run Code Online (Sandbox Code Playgroud)

但是,我宁愿避免这种解决方案,因为我通常会尽量避免在PL/SQL中发出DDL.

最后,我提出的第三个选项是简单地接受Start With值作为替换变量,而不是环境号.

有没有人更好地考虑如何解决这个问题?

oracle sqlplus

4
推荐指数
1
解决办法
5225
查看次数

Sqlplus参数

大家!我想知道这行是做什么的:

sqlplus -s /nolog <<EOF
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?谢谢您的帮助!

sql sqlplus

4
推荐指数
2
解决办法
2万
查看次数

无法在CREATE TABLE中使用内联约束

我在Oracle中有以下作为CREATE TABLE:

CREATE TABLE cs2_users (
    empnum     varchar2(12) PRIMARY KEY,
    toolsId    varchar2(20) 
        CONSTRAINT nn_cs2_users_toolsId NOT NULL
        CONSTRAINT fk_cs2_users_users FOREIGN KEY REFERENCES users.userid,
    admin      number(1,0) DEFAULT 0
        CONSTRAINT nn_cs2_users_admin NOT NULL
        CONSTRAINT ck_cs2_users_admin (admin IN (0,1)),
    givenname  varchar2(30) NOT NULL,
    middlename varchar2(30),
    sn         varchar2(30) NOT NULL,
    mail       varchar2(50) NOT NULL
);
Run Code Online (Sandbox Code Playgroud)

但是它失败并出现此错误:

ERROR at line 5:
ORA-02253: constraint specification not allowed here`
Run Code Online (Sandbox Code Playgroud)

当我使用SQL*Plus连接时,这是版本信息:

SQL*Plus: Release 11.2.0.3.0 Production on Tue Dec 18 16:38:27 2012

Copyright (c) 1982, 2011, Oracle.  All rights reserved. …
Run Code Online (Sandbox Code Playgroud)

oracle sqlplus

4
推荐指数
1
解决办法
2996
查看次数

如何将变量从shell脚本传递给sqlplus

我有一个调用file.sql的shell脚本

我正在寻找一种方法将一些参数传递给我的file.sql.

如果我没有将带有某些值的变量传递给sql脚本,我将不得不使用SELECT语句创建多个.sql文件,所有改变的是几个单词.

我的shell脚本调用file.sql:

sqlplus -S user/pass@localhost
echo " Processing triples"
./load_triples.sh BUILDING/Mapping_File BUILDING Y >> load_semantic.log

@/opt/D2RQ/file.sql
exit;
EOF
Run Code Online (Sandbox Code Playgroud)

这就是我的file.sql的样子:

SET ECHO ON;
SPOOL count.log

SELECT COUNT(*) as total_count
FROM TABLE(SEM_MATCH(
'{
        ?s rdf:type :ProcessSpec .
        ?s ?p ?o
}',SEM_Models('BUILDING'),NULL,
SEM_ALIASES(SEM_ALIAS('','http://VISION/DataSource/SEMANTIC_CACHE#')),NULL));

SPOOL OFF;
Run Code Online (Sandbox Code Playgroud)

我可以修改我的shell脚本以便它传递变量名吗?

即:model ="BUILDING"并将其传递给file.sql?

有什么相似的吗?

sql oracle shell sqlplus

4
推荐指数
1
解决办法
10万
查看次数

我想将一个变量参数传递给外部SQL文件(带有SQL*Plus的PL/SQL)

我已经搜索了这个论坛,并通过谷歌搜索我的问题的答案,但我无法找到我的挑战的具体答案.这就是为什么我在这里要求它希望得到你们其中一个人的回答.

我想使用多个SQL文件,而一个SQL文件是执行带参数的其他SQL文件的控制文件.该文件名为:startup.sql

我有一个包含所有值的表(不介意列的名称,我为我的帖子更改了它们).

create table control (
  S varchar2(15) not null,
  N varchar2(25 char) not null, 
  B varchar2(25 char) not null, 
  Acheck varchar2(25 char) not null, 
  Adcheck varchar2(25) not null, 
  Blu varchar2(25) not null,
  ADB varchar2(25)
)
Run Code Online (Sandbox Code Playgroud)

插入以下其中一个(有更多条目,但一个足以向您显示工作方式):

    insert into control (S,N,B,Acheck,Adcheck,Blu,ADB)
       values('Test','B','J','J','N','N', '');
Run Code Online (Sandbox Code Playgroud)

我的控制文件如下:

set escape on
set serveroutput on
SET DEFINE ON

declare
  cursor c_lees_control is
    select S, N, B, Acheck, Adcheck, Blu, ADB
  from control

  v_s           varchar2(30);
  v_b           varchar2(30);
  v_blu     varchar2(30);

begin

  for r_lees_control in c_lees_control
  loop …
Run Code Online (Sandbox Code Playgroud)

oracle plsql sqlplus

4
推荐指数
1
解决办法
2875
查看次数

防止SPOOL的输出被包裹

我正在尝试使用SQLPLUS中的SPOOL命令为数据库中的对象生成所有DDL

SET trimspool ON
SET wrap off
SET heading off
SET linesize 300
SET echo off
SET pages 999
SET long 90000
Col object_type format a10000
Col object_name format a10000
Col owner format a10000

spool export.out

SELECT DBMS_METADATA.GET_DDL(object_type, object_name, owner)
FROM all_OBJECTS 
WHERE OWNER = 'DMALM' 
and object_type not like '%PARTITION'
and object_type not like '%BODY'
and object_type not like '%LOB';

spool off
quit
Run Code Online (Sandbox Code Playgroud)

但我得到的输出文件是在col#80切割.如何防止输出文件被包装?

oracle sqlplus spool

4
推荐指数
2
解决办法
8885
查看次数

"引用字符串未正确终止"sqlplus

尝试使用以下语句插入值时出错

INSERT INTO PRODUCT (PRODUCT_NUM, ITEM_NUM, DATE)
VALUES (’11’,’19’, TO_DATE(’01-JAN-2001’,’DD-MON-YYYY’));
Run Code Online (Sandbox Code Playgroud)

错误:
ORA-01756:引用的字符串未正确终止

sql oracle sqlplus oracle10g

4
推荐指数
2
解决办法
1万
查看次数

如何从嵌套脚本换行到不同的文件?

是否可以从嵌套脚本换行到不同的文件?我有一个脚本调用另一个脚本.第一个脚本将所有内容假脱机到输出.我想只将第二个脚本的某些部分保存在不同的文件中.

但是当我在第二个脚本中停止假脱机时,它会完全停止,我不知道如何再次启动它以使其在第一个文件中继续假脱机.

例如,有这两个脚本,第二个选择到MY_TABLE不会被假脱机.

firstScript.sql

prompt --------------Start firstScript--------------
set pagesize 0
set heading on 
set feedback on 
set timing on
set time on
set echo on
set verify on

spool testFirstScript.sql

select DBMS_METADATA.GET_DDL('TABLE', 'MY_TABLE') from dual;

@secondScript.sql

select * from MY_TABLE where Id = 1; -- This doesn't get spooled.

spool off

prompt --------------End firstScript--------------
Run Code Online (Sandbox Code Playgroud)

secondScript.sql

prompt --------------Start secondScript--------------

spool testSecondScript.sql

select * from MY_TABLE;

spool off
prompt --------------End secondScript--------------
Run Code Online (Sandbox Code Playgroud)

线轴输出:

testFirstScript.sql

11:28:23 SQL> 
11:28:23 SQL> select DBMS_METADATA.GET_DDL('TABLE', 'MY_TABLE') from dual; …
Run Code Online (Sandbox Code Playgroud)

oracle sqlplus

4
推荐指数
1
解决办法
1756
查看次数

DBMS_OUTPUT.PUT_LINE没有打印任何内容

执行以下代码时,它只是说过程已完成,并且不打印信息.

BEGIN
 dbms_output.put_line('This is my first program');
END;
/
Run Code Online (Sandbox Code Playgroud)

当我执行上面的代码时,编译器说,PL/SQL过程已成功完成,但不会向控制台打印任何内容.我能做什么 ?

plsql sqlplus oracle10g dbms-output

4
推荐指数
1
解决办法
1万
查看次数

标签 统计

sqlplus ×10

oracle ×8

sql ×3

oracle10g ×2

plsql ×2

shell ×2

connection ×1

dbms-output ×1

spool ×1

unix ×1