我的oracle表中有一个CLOB数据类型的列.如何在此列中存储.txt文件以及如何检索相同的文件?
下面是表定义
fileID Number
logFile CLOB
Run Code Online (Sandbox Code Playgroud)
提前致谢
非常简化,我有一列数字和一列日期.我想生成一行,将基于一个日期的数字合并为一列,将另一个日期合并为另一列.
数据看起来像这样 -
date number
201111 500
201111 500
201111 500
201109 500
Run Code Online (Sandbox Code Playgroud)
我希望它看起来像这样 -
sum1 sum 2
1500 500
Run Code Online (Sandbox Code Playgroud)
我正在使用的代码:
SELECT SUM(A1.COL1),SUM(A2.COL1)
FROM TAB1 A1,TAB1 A2
WHERE A1.DATE = '201111'
AND A2.DATE = '201109'
Run Code Online (Sandbox Code Playgroud)
我得到的结果是 -
sum1 sum2
1000 1500
Run Code Online (Sandbox Code Playgroud)
基本上,它并不是总和sum1的总和(应该是1500但是返回1000)并且它总和sum2太多(应该是500但是返回1500).
我试图用批量插入或其他更有效的方法解决这段代码,但我没有想法.你会怎么解决这个问题.而不是循环这么多次我想在几次调用中更有效.请告诉我你会怎么做?尽可能使用代码!感谢名单
LOOP
-- Fetch a row
IF DBMS_SQL.FETCH_ROWS(cursor_handle) > 0 THEN
DBMS_SQL.column_value(cursor_handle, 9, cont_id);
DBMS_SQL.COLUMN_VALUE(cursor_handle, 3, proj_nr);
HTP.BOLD('ContractID: ' || cont_id || ' ProjectNR: ' || proj_nr);
HTP.BR;
ELSE
EXIT;
END IF;
-- delete the old list before saving a new one
IF sek_nr = 1 THEN
EXECUTE IMMEDIATE 'DELETE FROM W_Contracts WHERE user_id = :n' USING CURRENTUSER;
END IF;
EXECUTE IMMEDIATE 'Insert into W_Contracts values(''' || currentUser || ''', '
|| sek_nr || ', sysdate, ' || cont_id || …Run Code Online (Sandbox Code Playgroud) <?php
// This leaves the db connection in $conng require_once('/tms/http/html_docs/tease/csp/csp_tease.php');
/* This a logging function. When called with:
*/
function log_tkt_to_db($tkt_number, $date, $uid, $description, $conng)
{
echo "$tkt_number|$date|$uid|$description<br>";
$sqlinsert = "insert into TEASE_TKTLOGS VALUES ( \"$tkt_number\", \"$date\", \"$description\", \"$uid\")";
echo $sqlinsert . "<br>";
$insert = OCIParse($conng, $sqlinsert);
// OCIExecute($insert, OCI_COMMIT_ON_SUCCESS);
OCIExecute($insert);
}
log_tkt_to_db("00000000", "07/13/2012", "jt898u", "this a test, this is only a test", $conng);
?>
Run Code Online (Sandbox Code Playgroud)
我得到这个输出:
00000000|07/13/2012|jt898u|this a test, this is only a test
insert into TEASE_TKTLOGS (TICKET, DATE_TIME, CHANGE_DESC, …Run Code Online (Sandbox Code Playgroud) 在我的 select 语句中,一列包含下划线字符_。我想用空格替换下划线。例如,如果结果集列包含CLOSING_COMPANY,则结果应为CLOSING COMPANY
我是Oracle新手.我用这种语法创建了一个EVENT表:
CREATE TABLE Event
(event_id NUMBER (3) NOT NULL,
event_date DATE NOT NULL,
venue_id NUMBER (2) NOT NULL,
concert_id NUMBER (3) NOT NULL
);
Run Code Online (Sandbox Code Playgroud)
我想创建一个触发器,以确保音乐会在8月份无法运行.我尝试了以下代码来创建触发器.触发器已成功创建,但在插入8月份的日期后,已插入.这不是假设的.
CREATE OR REPLACE TRIGGER check_date
BEFORE INSERT ON event
DECLARE
event_date date;
BEGIN
IF (to_char(event_date, 'mm') = 8) THEN
raise_application_error(-20000, 'Concerts cannot be run during August');
END IF;
END;
Run Code Online (Sandbox Code Playgroud) 我有一个像这样的PL/SQL块:
BEGIN
FOR i IN 1..100
LOOP
UPDATE rptbody
SET comments = 'abcs';
WHERE (rptno> 100 and rptno < 200) and ROWNUM<2;
COMMIT;
END LOOP;
END;
Run Code Online (Sandbox Code Playgroud)
需要使用Oracle JDBC执行此块.我尝试了以下方法:
试图使用Statement对象执行此操作.由于这是一个块,因此引发了一个异常,说这不是一个sql语句
这可以分成sql语句,但我有100个这样的块,这对于代码来说很麻烦,并且想把它留给sqlplus.
尝试使用CallableStatement也没有用.
任何解决方案都会有帮助.
我在运行命令时遇到了一些麻烦,我认为这与 SYSDATE 命令有关:
CREATE TABLE crimes (
crime_ID NUMBER(9),
criminal_ID NUMBER(6),
classification CHAR(1),
data_changed DATE DEFAULT SYSDATE,
status CHAR(2),
hearing_date DATE,
appeal_cut_date DATE,
);
Run Code Online (Sandbox Code Playgroud)
我明白了ORA-00904: : invalid identifier error。任何修复?
为什么这会给我错误?
CREATE OR REPLACE trigger customerLineCount
BEFORE insert on cust_line
for each row
when(new.cust_id > 0)
DECLARE
lineCount number;
BEGIN
select count (*) into lineCount
from (cust_line inner join customer
on cust_line.cust_id = customer.cust_id)
where (customer.cust_id = :new.cust_id)
if :new.gender = "m" and lineCount = 3 THEN
dbms_output.put_line ('Error! User already has 3 lines');
elseif :new.gender = "f" and lineCount = 1 THEN
dbms_output.put_line ('Error! User already has 1 line');
end if;
END customerLineCount;
/
Run Code Online (Sandbox Code Playgroud) 这是我正在使用的查询:
SELECT p.name, p.id
FROM v_emp e
INNER JOIN v_prof p ON e.code = p.code
WHERE e.emp_id IN (SELECT a.id
FROM t_approval a
WHERE a.code1 <> 'R'
AND a.code2 = 'P'
AND a.date1 IS NULL
AND a.date2 IS NULL
AND a.code3 = 'ADMIN'
GROUP BY a.id
)
GROUP BY p.name, p.id
ORDER BY p.name
Run Code Online (Sandbox Code Playgroud)
查询执行时间超过4分钟.表t_approval有超过1500万条记录,我需要从该表中匹配搜索条件的不同ID.
该表已经有id,code1,code2,code3的索引.
请让我知道如何让这个运行得更快.
oracle ×7
plsql ×5
sql ×5
oracle10g ×2
triggers ×2
bulkinsert ×1
cursor ×1
group-by ×1
java ×1
jdbc ×1
oracle-apex ×1
oracle11g ×1
performance ×1
php ×1
select ×1