我正在寻找一种在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) 我想创建一个可以在我的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语法从表中只选择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) 
我谷歌[d]为此错误ORA-12560:TNS:协议适配器错误但无法找到实际原因以及如何解决此错误?
谁能告诉我一个解决登录问题的完美解决方案.
我正在尝试从具有9i(v9.2.0.1)客户端的PC连接到11g(v11.2.0.1.0)上的模式.它似乎可以很好地连接到一些模式,但不是这个模式 - 它ORA-01017 Invalid Username/Password每次都会返回错误.
用户名和密码是绝对正确的 - 任何人都可以想到为什么这不起作用的原因?
9i和11g之间是否有任何根本的不兼容性?
我正在比较三个Oracle模式.
我想获得每个数据库中使用的所有函数和过程的列表.这可以通过查询吗?(最好包括一个关于它们是否编译的标志)
理想情况下,使用一个标志来指示函数/过程是否在每个模式中都是很好的.但即使只是第一位也比手动检查每个模式更好.
我遇到了一个Oracle问题,到目前为止我无法找到原因.下面的查询适用于Oracle SQL开发人员,但在.NET中运行时会抛出:
ORA-01008:并非所有变量都绑定
我试过了:
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:\驱动器名为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) 当我有一个类似的sql语句时select * from table1,它工作得很好,但是只要我把它放到一个函数中,我得到:
ORA-00942: table or view does not exist
Run Code Online (Sandbox Code Playgroud)
怎么解决这个?
我刚刚发现了我认为在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 ...
你有什么要对此说的? …