有没有在oracle上有一个函数版本的东西? - 类似DLL的版本.
我想这样做的原因是,如果我们发布一个新功能来修复bug,我希望能够轻松判断客户端是否正在运行新功能.
如果没有,那么除了给出版本之外,还有解决方案吗?例如,过去我们将函数重命名为_v2并更改了代码以调用use new name - 看起来像是一种矫枉过正.
我不太明白......
有人可以给我一个提示,说明为什么查询B + C的结果不会累加到A?
我首先想到的是,由于拼写错误,下划线(应该是10)在B和C之间不匹配,但在复制/粘贴后我有点无奈.A的结果高于B + C的总和.
在语句B和C中是否存在某种我不知道的隐含的不同?
-- statement A
select count(*) from mytable;
-- statement B
select count(*) from mytable where mycolumn like '__________';
-- statement C
select count(*) from mytable where mycolumn not like '__________';
Run Code Online (Sandbox Code Playgroud) 我有一个使用oracle 11g数据库的asp.net mvc应用程序.在开发机器中,每件事都运行良好,但在生产服务器中部署asp.net应用程序时无法连接到数据库服务器.它总是抛出一个空的异常.
我还写了一个简单的控制台应用程序来测试数据库连接.它也不起作用.然后我意识到这是因为该机器没有安装oracle客户端.所以我为11g数据库32位版本安装了Oracle即时客户端.在此之后,控制台应用程序开始工作,但Web应用程序仍然无法连接.
我google很多,最后决定分析使用进程监视器.在进程监视器中,我发现Web应用程序(iis)正在寻找oraclient12.dll.
这个oraclient12.dll是12c数据库的oracle客户端的一部分.我不明白为什么它正在寻找这个DLL.

安装oracle数据库客户端12g后,oraclient12.dll的上述问题得到修复.但是iis现在无法找到oraclsce12.dll.我在整个文件系统中搜索了这个文件,却找不到.
有谁知道我应该安装什么来获得oraclsce12.dll.

谢谢,Sujith
我继承了一个表中包含1000多个列的数据库/表,这些表需要迁移到Oracle 12c数据库中。12c内在有什么东西可以帮助我们克服1000列的限制(例如以某种方式对表进行分区)?不幸的是,规范化表格不是一个选择。
这是我第一次尝试编写Oracle过程,并且我收到了一个错误(显示在问题标题中)DBMS_OUTPUT.PUT_LINE.
我在网上看到,它只能回传VARCAHR2列,所以我只投了两个VARCHAR2正在访问的非列,但我仍然得到错误.当我尝试直接在oracle SQL Developer中运行它时,会发生此错误.
CREATE OR REPLACE PROCEDURE LOGGING_PRC
(
STARTDATE_IN IN VARCHAR2,
ENDDATE_IN IN VARCHAR2,
NAMES_IN IN VARCHAR2,
MODS_IN IN VARCHAR2,
LOGS_IN IN VARCHAR2,
ID_OUT OUT VARCHAR2,
NAME_OUT OUT VARCHAR2,
MODULE_OUT OUT VARCHAR2,
ENTRYDATE_OUT OUT VARCHAR2,
STATUS_OUT OUT VARCHAR2,
TYPE_OUT OUT VARCHAR2
)
AS
BEGIN
SELECT
CAST(ID_LOG AS VARCHAR2(16)),
APNAME,
APPMOD,
CAST(ENTRYDATE AS VARCHAR2(30)),
APPSTATUS,
LOGTYPE
INTO
ID_OUT,
NAME_OUT,
MODULE_OUT,
ENTRYDATE_OUT,
STATUS_OUT,
TYPE_OUT
FROM
BASE
WHERE
ENTRYDATE > STARTDATE_IN AND
ENTRYDATE < ENDDATE_IN …Run Code Online (Sandbox Code Playgroud) 我已经在oracle 12c标准版中创建了一个用户。
现在,我尝试在sql developer中使用用户名和密码创建表,但出现以下错误。
SQL Error: ORA-01950: no privileges on tablespace 'USERS'01950. 00000 - "no privileges on tablespace '%s'"
Run Code Online (Sandbox Code Playgroud)
它还显示了以下原因和措施:
Cause: User does not have privileges to allocate an extent in the
specified tablespace.
Action: Grant the user the appropriate system privileges or grant the user
space resource on the tablespace.
Run Code Online (Sandbox Code Playgroud)
谁能帮我解决这个问题。我的用户名是c ## santh
是否可以通过在Oracle 12c中的sys表上执行SELECT来执行ALTER INDEX.请看下面
我试图通过下面的select子句找到我已经为其准备了alter语句的未使用的索引 -
SELECT 'alter index ' || owner || '.' || index_name || ' monitoring usage;'
FROM dba_indexes
WHERE owner NOT in (
'SYSTEM',
'SYS');
Run Code Online (Sandbox Code Playgroud)
接下来,我将手动将此SQL的输出复制到新的SQL命令选项卡并执行它们.而是可以直接执行这些语句而不是显示它们?
我试图在SQL中实现这一点,作为来自任何SQL实用程序(如DBViz或SQL +)和NOT IN PL/SQL或Unix的单个语句可执行文件.
拥有这样的JSON(我知道JSON不支持注释.在这种情况下用于说明这个想法):
{
"people": [
{ --// <-- index 0
"id": 100,
"name": "John Doe"
},
{ --// <-- index 1
"id": 101,
"name": "Jane Roe"
}
]
}
Run Code Online (Sandbox Code Playgroud)
我们可以从数组中的特定元素中选择值,如下所示:
SELECT name
FROM JSON_TABLE(
'{
"people": [
{
"id": 100,
"name": "John Doe"
},
{
"id": 101,
"name": "Jane Roe"
},
]
}', '$.people[*]'
COLUMNS(
ID NUMBER PATH '$.id',
NAME VARCHAR2 PATH '$.name'
)
) info
WHERE info.id = 101
Run Code Online (Sandbox Code Playgroud)
结果:
NAME
--------
Jane Roe
Run Code Online (Sandbox Code Playgroud)
有没有办法在数组中获取元素索引?就像是:
SELECT array_index --// <-- how …Run Code Online (Sandbox Code Playgroud) 我有一个这样创建的表:
create table b (data timestamp, value XMLTYPE);
Run Code Online (Sandbox Code Playgroud)
我在TOAD 12.6中运行此脚本以将XML存储在表中。
DECLARE
lc_Soap CLOB;
lc_Request CLOB;
px_RequestXML XMLTYPE
:= XMLTYPE ('<test><test1>ABDDÇJJSõ</test1></test>');
BEGIN
DELETE b;
lc_Soap :=
'<?xml version="1.0" encoding="ISO-8859-1"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
<h:AxisValues xmlns="urn:/microsoft/multichannelframework/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:h="urn:/microsoft/multichannelframework/">
<User xmlns="">TEST</User>
</h:AxisValues>
</s:Header>
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<substr/>
</s:Body>
</s:Envelope>';
lc_Request :=
pkg_utils.replace_clob (lc_Soap,
'<substr/>',
xml_utils.XMLTypeToClob (px_RequestXML));
px_RequestXML := XMLTYPE.createXML (lc_Request);
INSERT INTO b
VALUES (SYSTIMESTAMP, px_RequestXML);
COMMIT;
END;
Run Code Online (Sandbox Code Playgroud)
当我尝试查看VALUE列中的内容时,得到了这种编码UTF-8
<?xml version="1.0" encoding="UTF-8"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
<h:AxisValues xmlns="urn:/microsoft/multichannelframework/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:h="urn:/microsoft/multichannelframework/"> …Run Code Online (Sandbox Code Playgroud) 为什么选择有效但更新会抛出无效数据?
DECLARE
L_NUMBER NUMBER;
L_NUMBER_TABLE DBMS_SQL.NUMBER_TABLE;
L_LAST_PRINTED_DATE DATE := SYSDATE;
BEGIN
L_NUMBER_TABLE(0) := 1033000;
-- THIS WORKS
SELECT TB.COLUMN_VALUE
INTO L_NUMBER
FROM TABLE(L_NUMBER_TABLE) TB;
-- THIS DOES NOT WORK
-- ERROR AT LINE 1
-- ORA-00902: INVALID DATATYPE
-- ORA-06512: AT LINE 13
UPDATE SCHEMA.REAL_NUMBER_TABLE
SET REAL_NUMBER_DATE = L_LAST_PRINTED_DATE
WHERE EXISTS ( SELECT TB.COLUMN_VALUE
FROM TABLE( L_NUMBER_TABLE ) TB
WHERE TB.COLUMN_VALUE = REAL_NUMBER_COLUMN );
END;
Run Code Online (Sandbox Code Playgroud)
我试图通过游标循环并更新在游标中找到的主要序列的最后打印日期。我尝试通过游标循环,但是当我将游标返回给客户端时,它抛出索引不足错误。因此,我不得不创建两个游标,一个游标循环,另一个游标返回。我的目标是学习保存用于更新表的集合的最简单,最可维护的方法。
DECLARE
CURSOR L_ORIGINAL_CURSOR IS SELECT ...
L_CURSOR_COLUMN_1 PLS_INTEGER;
L_CURSOR_COLUMN_2 PLS_INTEGER;
L_CURSOR_COLUMN_3 PLS_INTEGER;
-- Keep …Run Code Online (Sandbox Code Playgroud)