我无法获得表格格式的输出。
DECLARE
prev VARCHAR2(10) := 'sysdate+1';
tdy VARCHAR2(10) := 'sysdate';
v_dt VARCHAR2(10);
result resultset;
BEGIN
v_dat :=
CASE
WHEN trunc(sysdate) = trunc(currnet_date) THEN
tdy
ELSE prev
END;
WITH
yesterday AS (
SELECT
src_dim_id,
rec_count
FROM
tab_total_last_updated
WHERE
to_char(dw_insert_datetime, 'mm-dd-yy') = CASE
WHEN TRIM(to_char(v_dt, 'DAY', 'NLS_DATE_LANGUAGE=ENGLISH')) =
'MONDAY' THEN
to_char(v_dt - 3, 'mm-dd-yy')
ELSE
to_char(v_dt - 1, 'mm-dd-yy')
END
AND table_type = 'EXT'
)
SELECT
*
INTO result
FROM
yesterday;
RETURN result;
END;
我试图根据条件将值sysdate传递到v_dt,但我无法继续我的代码,请帮助解决这个问题。
1条答案
按热度按时间mwg9r5ms1#
您的代码中有许多错别字,
v_dat
应该是v_dt
,current_date
拼写错误。不能对结果进行
RETURN
,因为您使用的是匿名PL/SQL块而不是函数。此外,您可能不希望使用PL/SQL,而只希望使用SQL查询(并且不需要子查询因子分解子句):
目前尚不清楚您使用以下工具的目的:
但您似乎正在尝试更正服务器和客户端上的日期差异。在这种情况下,可能是:
CURRENT_DATE
代替SYSDATE
;或SYSDATE
替换为例如SYSTIMESTAMP AT TIME ZONE 'UTC'
。