测试的时候我输入的参数:col_name(列名) :V11012
sta(numberx型):50136
date_now(varchar2型): 2007-10-4
就是这个date_now因为是动态的,还需要加单引号,所以被转义字符弄晕了,谢谢 帮我看看怎么改啊!create or replace function fun_T_mete_realtime_ave(sta in t_Mete_Realtime.V12004%TYPE,
col_name in varchar2,date_now in varchar2) return number is
Result_ave number;
temp_var varchar2 (200);
begin
temp_var:='select avg('||col_name||') as Result_ave
FROM T_mete_realtime
where IIIII='|| sta ||' and
VYEAR=to_number(to_char(to_date('''||date_now||''',''yyyy-mm-dd''),''yyyymm'')) and
VDAY=to_number(to_char(to_date('''||date_now||''',''yyyy-mm-dd''),''dd''))';
dbms_output.put_line(temp_var);
EXECUTE IMMEDIATE temp_var into Result_ave ;
return Result_ave;
end fun_T_mete_realtime_ave;
sta(numberx型):50136
date_now(varchar2型): 2007-10-4
就是这个date_now因为是动态的,还需要加单引号,所以被转义字符弄晕了,谢谢 帮我看看怎么改啊!create or replace function fun_T_mete_realtime_ave(sta in t_Mete_Realtime.V12004%TYPE,
col_name in varchar2,date_now in varchar2) return number is
Result_ave number;
temp_var varchar2 (200);
begin
temp_var:='select avg('||col_name||') as Result_ave
FROM T_mete_realtime
where IIIII='|| sta ||' and
VYEAR=to_number(to_char(to_date('''||date_now||''',''yyyy-mm-dd''),''yyyymm'')) and
VDAY=to_number(to_char(to_date('''||date_now||''',''yyyy-mm-dd''),''dd''))';
dbms_output.put_line(temp_var);
EXECUTE IMMEDIATE temp_var into Result_ave ;
return Result_ave;
end fun_T_mete_realtime_ave;
解决方案 »
- 连接Oracle9i报ORA-12540:超出内部限制错误!!!
- PL/SQL问题3
- set timing on 执行程序后的执行时间我看不懂?
- 请大家帮忙解释一下嵌套查询中IN和Exists以及NOT EXISTS的用法?
- 谁能帮我看一下我写的存储过程,老是说有编译错误,可又不给出错误的具体地方?我找了半天也找不到。
- varchar2 类型 大小最大为4000, 我想装更多的内容应该怎么办?
- o9i的dbf文件联机时提示“无法读取文件”,怎么办啊???在线等待!!!
- 如何将这些t-sql语句改为plsql?
- 请教大家一个sql的写法,谢谢了!
- 为什么orcale在windows 2000 server下装不了?
- 问一个很弱的问题啊,关于AVG函数的
- 求教:如何不用索引提高Select性能?
现在发现问题了。
temp_var varchar2 (200); -》 temp_var varchar2 (1000); 长度不够,你写的是对的
格式应该也是固定,那就不需要你这么复杂,转来转去的
直接用substr不就行了
substr(date_now,1,4)||substr(date_now,6,2)='200710'
substr(date_now,9,2)='4'
你可以在temp_var拼接前,先写好两个变量
比如t_vyear
t_vday 都是varchar
然后这样
temp_var:='select avg(' ¦ ¦col_name ¦ ¦') as Result_ave
FROM T_mete_realtime
where IIIII=' ¦ ¦ sta ¦ ¦' and
VYEAR='||t_vyear|' and VDAY='||t_vday;
10月份就多占一位了
多谢大家,HelloWorld_001 说的对,200长度少了,定1000就通过了,谢谢!