标签: oracle9i

在Oracle中进行多行插入的最佳方法是什么?

我正在寻找一种在Oracle 9数据库中执行多行插入的好方法.以下内容适用于MySQL,但在Oracle中似乎不受支持.

INSERT INTO TMP_DIM_EXCH_RT 
(EXCH_WH_KEY, 
 EXCH_NAT_KEY, 
 EXCH_DATE, EXCH_RATE, 
 FROM_CURCY_CD, 
 TO_CURCY_CD, 
 EXCH_EFF_DATE, 
 EXCH_EFF_END_DATE, 
 EXCH_LAST_UPDATED_DATE) 
VALUES
    (1, 1, '28-AUG-2008', 109.49, 'USD', 'JPY', '28-AUG-2008', '28-AUG-2008', '28-AUG-2008'),
    (2, 1, '28-AUG-2008', .54, 'USD', 'GBP', '28-AUG-2008', '28-AUG-2008', '28-AUG-2008'),
    (3, 1, '28-AUG-2008', 1.05, 'USD', 'CAD', '28-AUG-2008', '28-AUG-2008', '28-AUG-2008'),
    (4, 1, '28-AUG-2008', .68, 'USD', 'EUR', '28-AUG-2008', '28-AUG-2008', '28-AUG-2008'),
    (5, 1, '28-AUG-2008', 1.16, 'USD', 'AUD', '28-AUG-2008', '28-AUG-2008', '28-AUG-2008'),
    (6, 1, '28-AUG-2008', 7.81, 'USD', 'HKD', '28-AUG-2008', '28-AUG-2008', '28-AUG-2008');
Run Code Online (Sandbox Code Playgroud)

sql database oracle oracle9i sql-insert

245
推荐指数
6
解决办法
51万
查看次数

Oracle PL/SQL - 如何创建一个简单的数组变量?

我想创建一个可以在我的PL/SQL代码中使用的内存数组变量.我在Oracle PL/SQL中找不到任何使用纯内存的集合,它们似乎都与表相关联.我想在我的PL/SQL(C#语法)中做类似的事情:

string[] arrayvalues = new string[3] {"Matt", "Joanne", "Robert"};
Run Code Online (Sandbox Code Playgroud)

编辑: Oracle:9i

oracle plsql oracle9i

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

如何从oracle sql中只选择1行?

我想使用oracle语法从表中只选择1行DUAL.例如,我想执行此查询:

SELECT user 
  FROM DUAL
Run Code Online (Sandbox Code Playgroud)

......它有40条记录.但我只需要一条记录.......而且,我想在没有WHERE条款的情况下实现它.

我需要table_name字段中的内容,例如:

SELECT FirstRow(user) 
  FROM DUAL
Run Code Online (Sandbox Code Playgroud)

sql oracle oracle9i

100
推荐指数
8
解决办法
52万
查看次数

ORA-12560:TNS:协议适配器错误

在此输入图像描述

我谷歌[d]为此错误ORA-12560:TNS:协议适配器错误但无法找到实际原因以及如何解决此错误?

谁能告诉我一个解决登录问题的完美解决方案.

sql oracle oracle9i ora-12560

57
推荐指数
7
解决办法
51万
查看次数

ORA-01017从9i客户端连接到11g数据库时,用户名/密码无效

我正在尝试从具有9i(v9.2.0.1)客户端的PC连接到11g(v11.2.0.1.0)上的模式.它似乎可以很好地连接到一些模式,但不是这个模式 - 它ORA-01017 Invalid Username/Password每次都会返回错误.

用户名和密码是绝对正确的 - 任何人都可以想到为什么这不起作用的原因?

9i和11g之间是否有任何根本的不兼容性?

oracle oracle9i oracle11g

52
推荐指数
6
解决办法
53万
查看次数

获取Oracle数据库中所有函数和过程的列表

我正在比较三个Oracle模式.

我想获得每个数据库中使用的所有函数和过程的列表.这可以通过查询吗?(最好包括一个关于它们是否编译的标志)

理想情况下,使用一个标志来指示函数/过程是否在每个模式中都是很好的.但即使只是第一位也比手动检查每个模式更好.

oracle plsql oracle9i

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

ORA-01008:并非所有变量都绑定.他们受约束

我遇到了一个Oracle问题,到目前为止我无法找到原因.下面的查询适用于Oracle SQL开发人员,但在.NET中运行时会抛出:

ORA-01008:并非所有变量都绑定

我试过了:

  • 更改lot_priority(Varchar2或int32)的Oracle数据类型.
  • 更改lot_priority(string或int)的.NET数据类型.
  • 一个绑定变量名称在查询中使用两次.这在我在其他查询中不是一个问题,它在多个位置使用相同的绑定变量,但只是为了确保我尝试使用另一个名称将第二个实例作为自己的变量并单独绑定它.
  • 几种不同的绑定变量的方法(参见注释代码;还有其他).
  • 移动bindByName()调用.
  • 用文字替换每个绑定变量.我有两个独立的变量导致问题(:lot_pri和:lot_priprc).在两者之间我记不起一些小的变化.更改为文字使查询起作用,但它们确实需要使用绑定.

查询和代码如下.变量名已被更改以保护无辜者:

SELECT rf.myrow floworder, rf.stage, rf.prss,
rf.pin instnum, rf.prid, r_history.rt, r_history.wt
FROM
(
    SELECT sub2.myrow, sub2.stage, sub2.prss, sub2.pin, sub2.prid
    FROM (
        SELECT sub.myrow, sub.stage, sub.prss, sub.pin,
            sub.prid, MAX(sub.target_rn) OVER (ORDER BY sub.myrow) target_row
            ,sub.hflag
        FROM (
            WITH floc AS 
            (
                SELECT flow.prss, flow.seq_num
                FROM rpf@mydblink flow
                WHERE flow.parent_p = :lapp
                AND flow.prss IN (
                    SELECT r_priprc.prss
                    FROM r_priprc@mydblink r_priprc
                    WHERE priprc = :lot_priprc
                )
                AND rownum = 1
            )
            SELECT …
Run Code Online (Sandbox Code Playgroud)

c# data-binding oracle oracle9i ora-01008

27
推荐指数
3
解决办法
11万
查看次数

UTL_FILE.FOPEN()过程不接受目录路径?

我试图在存储在c:\驱动器名为vin1.txt的文件中写入并收到此错误.请提示!

> ERROR at line 1: ORA-29280: invalid
> directory path ORA-06512: at
> "SYS.UTL_FILE", line 18 ORA-06512: at
> "SYS.UTL_FILE", line 424 ORA-06512: at
> "SCOTT.SAL_STATUS", line 12 ORA-06512:
> at line 1
Run Code Online (Sandbox Code Playgroud)

这是代码

  create or replace procedure sal_status
   (
    p_file_dir IN varchar2,
    p_filename IN varchar2)
     IS  
    v_filehandle utl_file.file_type;
    cursor emp Is
        select * from employees
        order by department_id;
    v_dep_no departments.department_id%TYPE;
     begin
         v_filehandle :=utl_file.fopen(p_file_dir,p_filename,'w');--Opening a file
         utl_file.putf(v_filehandle,'SALARY REPORT :GENERATED ON %s\n',SYSDATE);
         utl_file.new_line(v_filehandle);
         for v_emp_rec IN emp LOOP
            v_dep_no :=v_emp_rec.department_id; …
Run Code Online (Sandbox Code Playgroud)

oracle plsql oracle9i utl-file

24
推荐指数
3
解决办法
27万
查看次数

ORA-00942:表或视图不存在(当单独的sql工作,但在oracle函数内不起作用)

当我有一个类似的sql语句时select * from table1,它工作得很好,但是只要我把它放到一个函数中,我得到:

ORA-00942: table or view does not exist 
Run Code Online (Sandbox Code Playgroud)

怎么解决这个?

sql oracle oracle9i ora-00942

24
推荐指数
3
解决办法
11万
查看次数

为什么在FOR循环中通过表达式连接,只执行一次?

我刚刚发现了我认为在Oracle中PLSQL vs SQL中有些出乎意料的行为.

如果我在SQLDeveloper上运行此查询,我得到5个结果:

select level lvl from dual connect by level <=5;
Run Code Online (Sandbox Code Playgroud)

但是,如果我在SQLDeveloper中运行此语句:

declare
  w_counter number :=0;
begin
  for REC in (select level lvl from dual connect by level <=5)
  loop
    w_counter := w_counter+1;
  end loop;
  dbms_output.put_line('W_COUNTER: '|| w_counter);
end;
Run Code Online (Sandbox Code Playgroud)

变量w_counter以值1结束(很奇怪)

但最奇怪的部分是,如果我将查询封装在子查询中...类似于:

declare
  w_counter number :=0;
begin
  for REC in (select * from (select level lvl from dual connect by level <=5))
  loop
    w_counter := w_counter+1;
  end loop;
  dbms_output.put_line('W_COUNTER: '|| w_counter);
end;
Run Code Online (Sandbox Code Playgroud)

w_counter变量完成与价值5 ...

你有什么要对此说的? …

sql oracle plsql oracle9i

21
推荐指数
1
解决办法
736
查看次数