家伙.说我有下表:
ID | String
---+---------
1 | <123><345>
2 | <1-2><45-67>
3 | <345-321><234>
Run Code Online (Sandbox Code Playgroud)
这是我的应用程序中的遗留数据格式,目前无法避免.我需要做的是:
ID | String
---+---------
1 | <123>
1 | <345>
2 | <1-2>
2 | <45-67>
3 | <345-321>
3 | <234>
Run Code Online (Sandbox Code Playgroud)
有关如何在不创建任何其他对象或pl-sql过程的情况下仅使用普通Oracle SQL获得此结果的任何建议?
谢谢.
如果我有一个名为Date列(Date字段)的表created_date,其值为"9/2/2010 5:25:42 PM".
我想选择从a start_date到a的所有行end_date.但是,end_date可能是null.在这种情况下,我想选择created_date大于的所有行end_date.
我编写了以下pl/sql程序,无法检测错误:
declare
variable a number;
b number:=2354;
begin
b:=:a;
end;
Run Code Online (Sandbox Code Playgroud)
这个错误是
SP2-0552:未声明绑定变量"A".
请帮忙......
简单的一个.我有点像PLSql的新手,oracle的错误信息永远不会太有帮助.
我想做一个简单的触发器来更新具有当前日期的列,即表的"修改日期"列.虽然得到一个奇怪的错误.
这个想法很简单
create table test1 (tcol varchar2(255), tcol2 varchar2(255))
CREATE OR REPLACE TRIGGER testTRG
AFTER INSERT OR UPDATE ON test1
FOR EACH ROW
BEGIN
update test1
set tcol2 = to_char(sysdate)
where tcol = :OLD.tcol;
END;
insert into test1 (tcol) values ('test1');
Run Code Online (Sandbox Code Playgroud)
这会弹出错误:
ORA-04091: table RAIDBIDAT_OWN.TEST1 is mutating, trigger/function may not see it
ORA-06512: at "RAIDBIDAT_OWN.TESTTRG", line 2
ORA-04088: error during execution of trigger 'RAIDBIDAT_OWN.TESTTRG'
Run Code Online (Sandbox Code Playgroud)
有人可以快速解决这个问题吗?
干杯,
F.
我有一个称为列的表Type,其可以具有三个值(name1,name2,name3).
我可以编写一个查询,首先返回带有Type= 的记录,name1然后是带有值name2和name3带WHERE子句的行,所以我可以通过CreationDate例如过滤它们吗?
这意味着,返回一天01/01/2000:
row 'name1'
row 'name1'
(rest of the rows)
Run Code Online (Sandbox Code Playgroud)
Id Type CreationDate
1, 'name1', '2000/01/01'
8, 'name1', '2000/01/01'
18, 'name3', '2000/01/01'
82, 'name2', '2000/01/01'
11, 'name2', '2000/01/01'
12, 'name3', '2000/01/01'
2, 'name1', '2000/01/02'
4, 'name1', '2000/01/02'
98, 'name2', '2000/01/02'
Run Code Online (Sandbox Code Playgroud)
对于每一天,首先获取"name1"类型的记录,然后获取其他类型的记录,而不是订单.
谢谢!你做.
我正在查看以下两种检索值的方法,并稍后通过insert语句存储它.即通过Pl/SQL游标或直接SQL.两种方法都有任何优势吗?还是有更有效的方法?
方法1
Cursor system_date
Is
select sysdate from dual;
system_date_rec system_date%type;
Open system_Date;
Fetch system_date into system_date_rec;
Insert into table(dateValue)
values(system_date_rec.date);
Run Code Online (Sandbox Code Playgroud)
方法2
dateString varchar(20);
Select sysdate into dateString from dual;
Insert into table(dateValue)
values(dateString);
Run Code Online (Sandbox Code Playgroud) 鉴于我有一个包含用户数据的表,如下所示:
userID calltime result
1 10:20 1
1 11:00 2
1 11:30 1
2 9:30 1
2 11:00 1
3 10:00 1
3 10:30 2
3 11:00 1
3 11:30 2
Run Code Online (Sandbox Code Playgroud)
现在我想这样总结一下:
userID result1 result2
1 2 1
2 2 0
3 2 2
(total) 6 3
Run Code Online (Sandbox Code Playgroud)
对我来说,总结用户数据很好,但是如何在查询中添加总行?UNION不适用于此.
非常感谢你做的这些.
编辑:这是我当前的查询,当然,它不起作用:
PROCEDURE P_SUMMARIZE_CALL
(
pStartDate IN DATE,
pEndDate IN DATE,
SummaryCur OUT MEGAGREEN_CUR
)
IS
BEGIN
OPEN SUMMARYCUR FOR
SELECT USERID, TOTALCALLS,CONNECTEDCALLS,RATE,NOANSWER FROM
(((SELECT USERID,
count(CALLID) AS TOTALCALLS,
sum(CONNECTED) as CONNECTEDCALLS, …Run Code Online (Sandbox Code Playgroud) 我需要一个SQL查询来执行以下操作:
select ..........
from ....
where ....
and arrival_time between systemtime and (systemtime + 7 hours )
Run Code Online (Sandbox Code Playgroud) 我怎样才能将以下plsql转换为tsql.B.STATUS(+)=1在tsql中不起作用.
Select * from A,B where A.ID=B.ID(+)
WHERE B.STATUS(+)=1
Run Code Online (Sandbox Code Playgroud)
这不会返回mssql中的行,因为它不理解B.STATUS是可选的
Select * from A LEFT JOIN B ON A.ID=B.ID
WHERE B.STATUS=1
Run Code Online (Sandbox Code Playgroud) 我有一个包含数据的假期表
HOLIDAYDA DESCRIPTION
--------- --------------------
19-JAN-11 to
17-JAN-11 to
10-JAN-11 new day
Run Code Online (Sandbox Code Playgroud)
现在我想要一周的第一个工作日.IE:如果我通过"12-JAN-2011"作为输入,我希望o-p作为2011年1月11日作为第1个工作日,因为10-JAN-2011是假日.
这是我的代码:
create or replace procedure sample as
l_dStartDay date;
l_dHolidayDate date;
begin
select trunc(to_date(sysdate),'Day')
into l_dStartday
from dual;
dbms_output.put_line('first day of the week ');
dbms_output.put_line(l_dStartDay);
for i in 2..5 Loop
select holidaydate
from holiday
into l_dHolidayDate
where holidaydate = (l_dStartDay + i);
if(l_dHolidaydate is null) then
dbms_output.put_line(l_dStartDay+i);
end if;
exit;
end loop;
end;
Run Code Online (Sandbox Code Playgroud)
我编译了上面的程序,但是" 使用编译错误创建了程序" .
新增:补充错误:
LINE/COL ERROR
-------- -----------------------------------------------------------------
9/1 PL/SQL: SQL Statement ignored …Run Code Online (Sandbox Code Playgroud)