我在使用字符串变量
打开游标时遇到问题这是我的oracle数据库代码
FUNCTION f_get_cursor(p_date_to_forecast VARCHAR) RETURN SYS_REFCURSOR AS
v_cursor SYS_REFCURSOR;
v_groupby_stmt VARCHAR(200) := 'GROUP BY '
|| CASE WHEN p_date_to_forecast = 'HOLIDAY' THEN
'DAY, ' ELSE '' END
|| 'TNI, FRMP, LR, HH;';
v_select_stmt VARCHAR2(1000) := 'SELECT WEEKDAY, TNI, FRMP, LR, HH,
AVG(Coalesce(VOLUME, 0)) AS AverageVolume
FROM (SELECT v.TNI, v.FRMP, v.LR, v.DAY,
v.HH, v.VOLUME, CASE WHEN
hd.HOLIDAY_DATE is not null
then ''HOLIDAY''
ELSE trim(to_char(v.DAY, ''Day''))
END AS WEEKDAY
FROM v_nem_rm16 v
LEFT JOIN DBP_ADMIN.DBP_HOLIDAY hd
ON v.DAY = hd.HOLIDAY_DATE
WHERE v.STATEMENT_TYPE !=''FORCAST'')
WHERE WEEKDAY = ''' || p_date_to_forecast
|| '''' || ' ' || v_groupby_stmt;
BEGIN
OPEN v_cursor FOR v_select_stmt;
return v_cursor;
END;
我只是试图根据参数“p_date_to_forcast”打开游标,该参数只是一周的名称字符串,如“星期六,星期二......等等”,然后返回光标。
当我运行查询时,我收到此错误
00911. 00000 - “无效字符”
*原因:标识符可能不以除以外的任何ASCII字符开头
字母和数字。第一个之后也允许$#_
字符。双引号括起来的标识符可能包含
除了双引号之外的任何字符。替代报价
(q'#...#')不能使用空格,制表符或回车符
分隔符。对于所有其他上下文,请参阅SQL语言
参考手册。
*操作:
问题是什么?我该如何解决?
感谢
答案 0 :(得分:0)
你试过这个吗?
for r_cur in your_cursor_name(Your_parameter) Loop
-- your working --
End loop;