gpt4 book ai didi

sql - 如何在oracle程序内部传递date参数?

转载 作者:行者123 更新时间:2023-12-03 16:05:47 32 4
gpt4 key购买 nike

下面是示例过程代码,

create or replace procedure pro_test(start_date date, end_date date)
is
begin

insert into test1 select col1, col2, col3 from main where range_date between start_date and end_date;

exception

< what are the exception I need to capture >

end;
/

Q1:这是在程序内部直接传递日期的正确方法吗?
Q2:如果没有,我可以在程序内部传递varchar,以在声明部分转换日期吗?
Q3:在开始部分是在运算符(operator)之间使用的,我可以直接传递程序参数吗?

在执行此过程时, exec pro_test('10102015','30102015');我需要在句子之间提到什么?在start_date和end_date之间就足够了还是我需要掩盖日期格式?

有人可以帮我解决这个问题吗?

最佳答案

Q1 : Is this right way to pass date directly inside the procedure?



是的。

Q3 : In begin part am using between operator, can i pass procedure parameter directly ?



不确定您的意思是什么,但是您的insert语句很好。您将传递 DATE 作为参数并将其插入表中。

我认为,所有这一切都可以在纯 SQL 的单个 INSERT..SELECT 语句中完成。
insert into test1 
select col1, col2, col3
from main
where range_date
between TO_DATE(<date_literal>,<format mask>)
and TO_DATE(<date_literal>,<format mask>);

更新每个OP的注释:

While executing this procedure, exec pro_test('10102015','30102015'); What i need to mention in between sentence? between start_date and end_date is this enough or i need to mask date format?


'10102015'不是DATE,它是字符串文字。您必须将其作为DATE传递,因此您必须使用带适当格式掩码的 TO_DATE ANSI日期文字,因为您没有任何时间部分。 ANSI日期文字使用固定格式 'YYYY-MM-DD'

例如,

使用 TO_DATE :
EXEC pro_test(TO_DATE('10102015','DDMMYYYY'),TO_DATE('30102015','DDMMYYYY'));

使用 ANSI日期文字:
EXEC pro_test(DATE '2015-10-10', DATE '2015-10-30');

关于sql - 如何在oracle程序内部传递date参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33932677/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com