Sql 如何在oracle中传递带有sys_日期的变量
我想将sysdate传递到V_TODAY变量中,我可以将它用于其他异常块或假脱机期间。我在写下面的代码,这是给一个错误有V_今天必须声明。对于具有值名称和ID的变量,我可以传递值Sql 如何在oracle中传递带有sys_日期的变量,sql,oracle,variables,plsql,parameter-passing,Sql,Oracle,Variables,Plsql,Parameter Passing,我想将sysdate传递到V_TODAY变量中,我可以将它用于其他异常块或假脱机期间。我在写下面的代码,这是给一个错误有V_今天必须声明。对于具有值名称和ID的变量,我可以传递值 SET ECHO OFF; SET FEEDBACK OFF; SET HEAD OFF; SET LIN 256; SET TRIMSPOOL ON; SET WRAP OFF; SET PAGES 100; SET TERM OFF; SET SERVEROUTPUT ON; SPOOL F:\LATEST\Lo
SET ECHO OFF;
SET FEEDBACK OFF;
SET HEAD OFF;
SET LIN 256;
SET TRIMSPOOL ON;
SET WRAP OFF;
SET PAGES 100;
SET TERM OFF;
SET SERVEROUTPUT ON;
SPOOL F:\LATEST\Loop_TRE.sql;
PROMPT VAR NAME VARCHAR2(100);
PROMPT VAR ID VARCHAR2(100);
PROMPT VAR V_TODAY date;
BEGIN
FOR TARGET_POINTER IN (SELECT NAME, ID from D_URL)
LOOP
DBMS_OUTPUT.PUT_LINE('DEFINE TARGET = '''||TARGET_POINTER.NAME||''';');
DBMS_OUTPUT.PUT_LINE('EXEC :NAME := '''||TARGET_POINTER.NAME||'''; ');
DBMS_OUTPUT.PUT_LINE('DEFINE TARGET1 = '''||TARGET_POINTER.ID||''';');
DBMS_OUTPUT.PUT_LINE('EXEC :ID := '''||TARGET_POINTER.ID||'''; ');
DBMS_OUTPUT.PUT_LINE('@@TGT_DOP.sql;');
END LOOP;
Select SYS_DATE INTO V_TODAY from DUAL;
DBMS_OUTPUT.PUT_LINE('DEFINE V_TODAY = '''||V_TODAY||''';');
DBMS_OUTPUT.PUT_LINE('EXEC :V_TODAY := '''||V_TODAY||'''; ');
DBMS_OUTPUT.PUT_LINE('@@Loop_TST.sql;');
END;
/
SPOOL OFF;
@@Loop_TRE.sql;
今天在Declare块中声明V_,并使用
SYSDATE
而不是SYS_DATE
参照您的代码:
SET ECHO OFF;
.
.
PROMPT VAR NAME VARCHAR2(100);
PROMPT VAR ID VARCHAR2(100);
DECLARE
V_TODAY DATE;
BEGIN
....
...
END LOOP;
Select SYSDATE INTO V_TODAY from DUAL;
...
...
您是否尝试在匿名块中声明
V_TODAY
而不是提示?不,我不是仅声明提示。我可以在TGT_DOP.sqlname和id中使用变量value。您的sys_date不是sysdste,并且倾向于同意vtoday应该是into工作的变量,你没有where子句与你的问题无关,但是你的where子句结尾不正确?@KaushikNayak我已经纠正了它的复制粘贴问题我不能在这里声明,因为我在使用假脱机,它会抛出错误。如您所见,我无法毫无问题地传递Name和ID的变量,并在TGT_DOP.sql中使用它。所以我不明白为什么我今天不能。我也从SYS_DATE更改为SYSDATE,但仍然相同error@Andrew:您可以使用的名称和Id,因为默认情况下,这些是目标\指针的属性。这些不是来自于声明。