配置从Oracle到MS Access的访问.
Oracle XE 11.2.0.2.
Microsoft Access 2010
有两个INSERTS(插入到驻留在MS ACCESS db中的表)操作.其中一个是使用pl\sql变量,另一个不是.
首先插入:
insert into SomeTable@MSADB("ID", "Name")
values(l_ID, l_Name);
Run Code Online (Sandbox Code Playgroud)
第二个:
insert into SomeTable@MSADB("ID", "Name")
values(123, 'SomeName');
Run Code Online (Sandbox Code Playgroud)
在第二次插入的情况下,一切都很好.但第一个给出错误"HYC00 NativeError = 106未实现的可选功能".我只是无法理解为什么会发生这种情况以及如何解决这个问题.
绑定变量(立即执行)没有解决这个问题.DBMS_HS_PASSTHROUGH.BIND_VARIABLE也没有解决这个问题.
我看到的唯一解决方案是将这些变量嵌入到字符串中然后执行它.还有其他解决办法迫使第一个插件工作吗?
谢谢.
我有麻烦Oracle.DataAccess在WPF.我Oracle.DataAccess v4.0
没有遇到任何问题.但现在它更新到4.112版本,当我在WPF设计器中添加对此版本的引用时无法加载.它给了我以下错误:
System.BadImageFormatException
Could not load file or assembly 'Oracle.DataAccess,
Version=4.112.3.0, Culture=neutral,
PublicKeyToken=89b483f429c47342' or one of its dependencies.
An attempt was made to load a program with an incorrect format.
Run Code Online (Sandbox Code Playgroud)
请注意,程序运行没有任何问题.我读到它可能是由于属性中的"目标cpu".我测试了x64和x86但没有任何变化.我怎么解决这个问题.提前致谢
我有一个接受数组的PLSQL oracle函数:
CREATE OR REPLACE FUNCTION CM.give_me_an_arrays (p_array IN num_array)
RETURN VARCHAR2
IS
x VARCHAR2 (512);
BEGIN
x := '';
FOR i IN 1 .. p_array.COUNT
LOOP
DBMS_OUTPUT.put_line (p_array (i));
END LOOP;
RETURN x;
END;
/
Run Code Online (Sandbox Code Playgroud)
我想这样做:
select CM.give_me_an_arrays(select COM.COM_ID
from CM.XLP_SE_COMPONENT com
where rownum < 10)
from dual
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?提前致谢.
你能纠正这个问题吗?它显示了一些语法错误.
SELECT *
WHERE `id` IN (SELECT DISTINCT unit_trust_managing_company_id
FROM ut_funds
ORDER BY `company_name`)
Run Code Online (Sandbox Code Playgroud)
有SELECT DISTINCT unit_trust_managing_company_id FROM ut_funds ORDER BYcompany_name`查询正常工作.
我在运行一些 - 相当简单 - 在Oracle(11g R2)中包含SUM和COUNT函数的xPath查询时遇到问题.例如:
select extractvalue(
xmltype.createxml('<a>
<b>
<c>1</c>
<d>XXX</d>
</b>
<b>
<c>2</c>
<d>YYY</d>
</b>
</a>')
, 'sum(/a/b/c)'
)
from dual;
Run Code Online (Sandbox Code Playgroud)
同样的count:
select extractvalue(
xmltype.createxml('<a>
<b>
<c>1</c>
<d>XXX</d>
</b>
<b>
<c>2</c>
<d>YYY</d>
</b>
</a>')
, 'count(/a/b/c)'
)
from dual;
Run Code Online (Sandbox Code Playgroud)
我得到ORA-31012了回应.知道如何让它工作吗?或者什么是可能的解决方法?
Oracle 11g.我想通过,如果我添加NOENTITYESCAPING到该XMLELEMENT函数,它很好地关闭实体转义.但是,当我将结果传递给EXTRACT逃逸似乎又回来了.
select xmlelement(NOENTITYESCAPING e,id,'->')
from (select level as id
from dual
connect by level < 6)
XMLELEMENT(NOENTITYESCAPINGE,ID,'->')
---------------------------------------
<E>1-></E>
<E>2-></E>
<E>3-></E>
<E>4-></E>
<E>5-></E>
Run Code Online (Sandbox Code Playgroud)
现在,添加EXTRACT:
select xmlelement(NOENTITYESCAPING e,id,'->').extract('//text()')
from (select level as id
from dual
connect by level < 6)
XMLELEMENT(NOENTITYESCAPINGE,ID,'->').EXTRACT('//TEXT()')
----------------------------------------------------------
1->
2->
3->
4->
5->
Run Code Online (Sandbox Code Playgroud)
是否有任何修复/解决方法可以关闭转义?该手册给出了没有任何帮助.
对于月费报告目的,需要显示如下所述的输出.只有当月支付费用时才会在表格中输入数据,否则表格中不会显示该月份.
执行查询
select reg_id, dop,to_char(dop, 'FMMonth,YYYY') Month, status
from fees_status
where dop between ('1-Jul-2012') and ('1-Dec-2012')
Run Code Online (Sandbox Code Playgroud)
输出是
REG_ID DOP MONTH STATUS
AE-8 7/1/2012 July,2012 PAID
AE-8 9/1/2012 September,2012 PAID
AE-8 11/1/2012 November,2012 PAID
AE-8 12/1/2012 December,2012 PAID
Run Code Online (Sandbox Code Playgroud)
对于报告目的,需要输出为
REG_ID DOP MONTH STATUS
AE-8 7/1/2012 July,2012 PAID
AE-8 8/1/2012 August,2012 NOTPAID
AE-8 9/1/2012 September,2012 PAID
AE-8 10/1/2012 October,2012 NOTPAID
AE-8 11/1/2012 November,2012 PAID
AE-8 12/1/2012 December,2012 PAID
Run Code Online (Sandbox Code Playgroud)
有人可以帮助显示上面提到的输出吗?
使用Oracle 11,当我这样做
SELECT XMLELEMENT("dummy", NULL) as xml_1
FROM dual
Run Code Online (Sandbox Code Playgroud)
输出是 <dummy></dummy>
我怎么强行回来 <dummy />?
我有两张桌子.而且我需要organizer_id在2010年到2012年之间组织所有活动的所有活动.
event
---------
event_id
name
year
event_organizer
---------
event_id
organizer_id
Run Code Online (Sandbox Code Playgroud)
我试过这样的事情:
SELECT organizer_id
FROM event_organizer
WHERE event_id IN (SELECT event_id
FROM event
WHERE year>=2010 AND year<=2012);
Run Code Online (Sandbox Code Playgroud)
但它不起作用,因为我只需要organizer_id在2010年和2012年之间组织所有事件.我不知道查询应该如何按照我的意愿运行.
考虑一个有多个课程注册请求的系统.我们需要一种方法来阻止系统中的重复注册.我创建了一个触发器,如下所示,但是当我同时从不同的连接获得两个请求(相隔ms)时,它们都被插入.我究竟做错了什么
create trigger enrollment_duplicates
before insert
on enrollment
for each row
begin
select count(*)
into cnt
from enrollment
where user = :new.user
and course = :new.course
and status = 'Enrolled';
if cnt > 0 then
raise_application_error(-20001, 'User already enrolled in course');
end if;
end;
Run Code Online (Sandbox Code Playgroud)
编辑:
如果我们使用户/课程成为一个独特的约束,这很容易,但事实并非如此.他们可以根据状态重新注册.