oracle sql 存储过程问题,可以追加分数
如题:(求大神把这个sqlserver的存储过程改写成oracle的要求输出效果一样)createprocedureimp_dat(v_strat_datedate,v_...
如题:(求大神把这个sqlserver的存储过程改写成oracle的 要求输出效果一样)
create procedure imp_dat(v_strat_date date,v_end_date)
as
begin
select*from t_test t where t.bizdate between v_strat_date and v_end_date;
end ; 展开
create procedure imp_dat(v_strat_date date,v_end_date)
as
begin
select*from t_test t where t.bizdate between v_strat_date and v_end_date;
end ; 展开
展开全部
这么给你说 。 你这是可以输出一个的所有列嘛。。。
但是oracle 是不能的
只能输出 你想要的列 当然 你要的多的话 输出就就很多 。
就要用 DBMS_OUTPUT.PUT_LINE();
但是oracle 是不能的
只能输出 你想要的列 当然 你要的多的话 输出就就很多 。
就要用 DBMS_OUTPUT.PUT_LINE();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
--我测试过了 没有问题 而且日期这样的处理方法避免了时分秒带来的麻烦 希望采纳
create or replace procedure imp_dat (
v_strat_date nvarchar2 default null,
v_end_date nvarchar2 default null,
cv_1 out sys_refcursor
)
is
iv_strat_date date:=to_date(v_strat_date,'yyyy-mm-dd');
iv_end_date date:=to_date(v_end_date,'yyyy-mm-dd')+1;
begin
open cv_1 for
select * from t_test t where t.bizdate between iv_strat_date date and iv_end_date date;
end ;
create or replace procedure imp_dat (
v_strat_date nvarchar2 default null,
v_end_date nvarchar2 default null,
cv_1 out sys_refcursor
)
is
iv_strat_date date:=to_date(v_strat_date,'yyyy-mm-dd');
iv_end_date date:=to_date(v_end_date,'yyyy-mm-dd')+1;
begin
open cv_1 for
select * from t_test t where t.bizdate between iv_strat_date date and iv_end_date date;
end ;
更多追问追答
追问
请问这样返回的结果集等同于直接select的结果集而不是dbms_out那样打印的吗? 我想要的效果就跟直接SELECT出来的结果集一样 谢谢您了 还有 您写的这个存储过程带out了 那怎么调用呢?
谢谢 我oracle白痴
追答
这个是指针 在存储过程声明变量后都有的 是一种格式 这点和sql server的区别比较大
dbms输出也可以 效果差不多 但比较正式 我只是按照你的存储过程转的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
create or replace procedure imp_dat(v_strat_date date,v_end_date date)
is
begin
cursor cursor_test is select * fromt_test;
row_test a%rowtype;
begin
for row_test in cursor_test loop
dbms_output.put_line(row_test.字段1||row_test.字段2||row_test.字段3);
end loop;
end;
调用方法:
declare
v_strat_date date;
v_end_date date;
begin
imp_dat(v_strat_date date,v_end_date date);
end;
is
begin
cursor cursor_test is select * fromt_test;
row_test a%rowtype;
begin
for row_test in cursor_test loop
dbms_output.put_line(row_test.字段1||row_test.字段2||row_test.字段3);
end loop;
end;
调用方法:
declare
v_strat_date date;
v_end_date date;
begin
imp_dat(v_strat_date date,v_end_date date);
end;
更多追问追答
追问
为什么在创建存储过程时建立的那两个参数没有在存储过程里面用到呢?在调用的时候反而又声明了一遍呢?
追答
在select 语句有添加条件:
cursor cursor_test is select * from t_test t where t.bizdate between v_strat_date and v_end_date;
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
其实oracle和sqlserver除了数据类型的名字,基本是一样的
create or replace procedure imp_dat(start date,end date)
is
begin
select * from t_test t where t.bizdate between start and end;
end;
create or replace procedure imp_dat(start date,end date)
is
begin
select * from t_test t where t.bizdate between start and end;
end;
追问
你这样能执行?别乱说好不好
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询