创建PLSQL过程,该过程将客户ID作为参数并显示
他/她的预订.每个预订展示厅否,酒店,开始日期和持续时间
create or replace procedure emp_project(CustID NUMBER)
is
cursor ecur
is
select r.RoomNo, r.HotelName, StartDate, Duration
from Room r, Booking b
where r.RoomNo=b.RoomNo
and r.RoomNo = b.CustID;
begin
for erec in ecur loop
dbms_output.put_line(erec. RoomNo ||' '||erec. HotelName ||' '|| erec. Duration);
end loop;
end;
/
Run Code Online (Sandbox Code Playgroud)
有人可以解释我的参数有什么问题吗?我运行时遇到此错误:
SQL> exec emp_project
BEGIN emp_project; END;
*ERROR at line 1:
ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'EMP_PROJECT'
ORA-06550: line 1, column 7:
PL/SQL: …Run Code Online (Sandbox Code Playgroud) 我是Oracle(11gr2)的新手,我有以下脚本:
BEGIN
DECLARE
source varchar2(1);
BEGIN
dbms_output.enable;
BEGIN
EXECUTE IMMEDIATE 'DROP VIEW SP_AD;';
SELECT SOURCE INTO source FROM map_switch WHERE ROWNUM = 1;
IF source = 'A'
THEN
EXECUTE IMMEDIATE 'DROP TABLE SP_AD_B;';
EXECUTE IMMEDIATE 'RENAME TABLE SP_AD_A TO SP_AD;';
ELSE
EXECUTE IMMEDIATE 'DROP TABLE SP_AD_A;';
EXECUTE IMMEDIATE 'RENAME TABLE SP_AD_B TO SP_AD;';
END IF;
COMMIT WORK;
dbms_output.put_line('SP_AD table issue fixed');
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('Exception, rolling back transaction, SP_AD not resolved.');
ROLLBACK WORK;
END;
END;
END;
/
Run Code Online (Sandbox Code Playgroud)
基本上,它确定要删除哪个表,然后删除视图并重命名另一个表.
如果我单独运行语句,它可以很好地工作,但在上面的脚本中,它返回成功执行的过程但没有执行任何操作. …
如何在sql提示符下编译oracle包并使用toad?我用谷歌搜索,我只得到重新编译的答案,找不到任何编译方式.
我有一个查询返回一个数字(16,2)数据类型的价格.
所以查询SELECT PRICE FROM PRODUCT;
它应该回来
10.00
1234.00 --> values are right aligned; space needs to be added to 10.00
to align it with 1234.00
Run Code Online (Sandbox Code Playgroud)
要对齐多少空格是动态的我们知道数据类型的长度是(14,2),所以我想将数字转换为char并在数字的左边添加空格.
SELECT LPAD(p.price , (17 - LENGTH(TO_CHAR(p.price))),' ') FROM Product.
Run Code Online (Sandbox Code Playgroud)
我尝试了上面的查询,但它没有给我正确的结果.
我只是想知道它有什么问题
我试图找到返回结果集的最简单方法,该结果集指示表中是否存在某些值.考虑一下这个表:
id ------ 1 2 3 7 23
我将收到一个ID列表,我需要回复相同的列表,指出表中存在哪些.如果我得到的列表如下:'1','2','3','4','8','23',我需要生成一个如下所示的结果集:
id | status ------------- 1 | present 2 | present 3 | present 4 | missing 8 | missing 23 | present
到目前为止,我已经设法使用以下方法UNPIVOT:
select id, 'present' as status
from my_table
where id in ('1','2','3')
union
select subq.v as id, 'missing' as status
from (
select v
from
(
(
select '1' v1, '2' v2, '3' v3 from dual
)
unpivot
(
v
for x in (v1,v2,v3)
) …Run Code Online (Sandbox Code Playgroud) 我是SQL的新手,希望能帮助我们将其变成一个函数:
SELECT
SYSDATE "Today's Date",
NEXT_DAY(trunc(SYSDATE, 'MONTH')-1, 'Tuesday')"First Tuesday this Month",
NEXT_DAY (LAST_DAY(SYSDATE)+1,'TUESDAY') "First Tuesday of Next Month"
FROM DUAL;
Run Code Online (Sandbox Code Playgroud)
这是我尝试将上述内容转换为函数(因为你可以看到它没有那么热)...
CREATE OR REPLACE FUNCTION first_tuesday
RETURN DATE
AS
date1 DATE;
date2 DATE;
date3 DATE;
BEGIN
date1 := SELECT SYSDATE;
date2 := SELECT NEXT_DAY(trunc(SYSDATE, 'MONTH')-1, 'Tuesday');
date3 := SELECT NEXT_DAY (LAST_DAY(SYSDATE)+1,'TUESDAY');
RETURN 'todays date:' || date1,
'first tuesday this month:' || date2,
'first tuesday next month:' || date3;
END;
/
SELECT first_tuesday FROM DUAL;
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我收到ORA-21000:-4091的raise_application_error的错误号参数超出了UTL_SMTP.quit(连接)的范围;
我在程序中有SMTP相关代码.所以当我运行下面的程序时它工作正常.但是当我从我的应用程序中的触发器调用Send_Mail时,它会抛出上述错误.
BEGIN
Send_Mail (p_to => 'temp@temp.com',
p_from => 'temp@temp.com',
p_message => 'Test message',
p_smtp_host => 'tempserver'
);
END;
/
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助.
创建表:
create table customer (Name varchar2(10), Address varchar(40), Contact number);
Run Code Online (Sandbox Code Playgroud)
INSERT的创建过程:
CREATE OR REPLACE PROCEDURE SP_CUSTOMER (
p_name customer.Name%TYPE,
p_address customer.Address%TYPE,
p_contact customer.Contact%TYPE)
IS
BEGIN
INSERT INTO customer ("Name", "Address", "Contact")
VALUES (p_name, p_address, p_contact);
COMMIT;
END;
/
Run Code Online (Sandbox Code Playgroud)
错误:IT显示:警告:使用编译错误创建的过程.
CREATE PROCEDURE FOR SELECT:
CREATE OR REPLACE PROCEDURE SP_SELECT_CUSTOMER (
p_name customer.Name%TYPE,
p_address customer.Address%TYPE,
p_contact customer.Contact%TYPE)
IS
BEGIN
SELECT Name, Address, Contact FROM customer;
END;
/
Run Code Online (Sandbox Code Playgroud)
错误:IT显示:警告:使用编译错误创建的过程.
问题是什么.?怎么解决呢.
您好,以下是我的代码.我需要使用视图中的数据创建一个视图并在另一个游标中获取数据.但是当我执行我的代码时,我收到错误
"ORA-06550:第56行,第37列:PL/SQL:ORA-00942:表或视图不存在ORA-06550:第52行,第9列:PL/SQL:忽略SQL语句"
这是什么问题?提前致谢.
declare
drop_view_sql varchar2(100) := 'drop view rv_task_number_view';
type tasks_rec is record(task_number varchar2(20));
type t_tab is table of tasks_rec;
tasks_tab t_tab;
notes_rec xx_fs_mob_loc_rec.task_notes_rec;
notes_tab xx_fs_mob_loc_rec.task_notes_tab;
begin
execute immediate 'create view apps.rv_task_number_view as
SELECT distinct ct.task_number
FROM csf_ct_tasks ct ,
cs_estimate_details ced,
csf_debrief_headers cdh,
csf_debrief_lines cdl,
jtf_task_assignments jta
WHERE 1=1
and jta.task_id = ct.task_id
and jta.task_assignment_id = cdh.task_assignment_id(+)
and cdh.debrief_header_id = cdl.debrief_header_id(+)
and cdl.debrief_line_id = ced.source_id(+)
AND ((ct.planned_end_date between (sysdate-30) and (sysdate+30)) or (ct.scheduled_end_date between (sysdate-30) and (sysdate+30)))
and …Run Code Online (Sandbox Code Playgroud) create or replace procedure nearprice
is
userprice products.price%type := 4.23;
closest products.price%type;
temp products.price%type;
tempid products.pid%type;
cursor procur is
select * from products;
prorec procur%rowtype;
begin
open procur;
fetch procur into prorec;
closest := abs(prorec.price - userprice);
tempid := prorec.pid;
while procur%found then
loop
fetch procur into prorec;
temp := abs(prorec.price - userprice);
if temp < closest then
closest := temp;
tempid = prorec.pid;
end if;
end loop;
close procur;
select *
from products
where pid = tempid;
end;
Run Code Online (Sandbox Code Playgroud)
我想检索 …