为什么我无法在 SQL Developer 中 运行 这个脚本?
Why I cannot run this script in SQL Developer?
伙计们,我真的需要你们的帮助。我写了几行代码,现在我卡住了,因为我不能 运行 在 SQL Developer 中执行下面的程序。
程序
create or replace
PROCEDURE ROUTSETTER(
var IN VARCHAR2)
IS
COUNT_RECORDS NUMBER := 0;
BASE_TABLE VARCHAR2(20) := 'DROGA';
NEW_TABLE VARCHAR2(20) := 'DROGA_COPY';
BEGIN
SELECT COUNT(*)
INTO COUNT_RECORDS
FROM ALL_OBJECTS
WHERE OBJECT_TYPE = 'TABLE'
AND OBJECT_NAME = NEW_TABLE;
IF COUNT_RECORDS > 0 THEN
EXECUTE IMMEDIATE 'TRUNCATE TABLE '||NEW_TABLE;
dbms_output.put_line('TABLE '||NEW_TABLE||' HAS BEEN TRUNCATED');
ELSE
EXECUTE IMMEDIATE 'CREATE TABLE '||NEW_TABLE||' AS SELECT * FROM '||BASE_TABLE||' WHERE WYCENA = '||var;
dbms_output.put_line('TABLE '||NEW_TABLE||' HAS BEEN CREATED');
END IF;
END ROUTSETTER;
错误
ORA-00933: SQL command not properly ended
ORA-06512: at "PROJEKT.ROUTSETTER", line 17
ORA-06512: at line 6
你的线路;
EXECUTE IMMEDIATE 'CREATE TABLE '||NEW_TABLE||
' AS SELECT * FROM '||BASE_TABLE||' WHERE WYCENA = '||var;
...将 var
(这是一个 varchar)直接放入 SQL 语句中,而无需适当的引用。
如果我们假设 var
没有单引号,您的行应该类似于;
EXECUTE IMMEDIATE 'CREATE TABLE '||NEW_TABLE||
' AS SELECT * FROM '||BASE_TABLE||' WHERE WYCENA = '''||var||'''';
伙计们,我真的需要你们的帮助。我写了几行代码,现在我卡住了,因为我不能 运行 在 SQL Developer 中执行下面的程序。
程序
create or replace
PROCEDURE ROUTSETTER(
var IN VARCHAR2)
IS
COUNT_RECORDS NUMBER := 0;
BASE_TABLE VARCHAR2(20) := 'DROGA';
NEW_TABLE VARCHAR2(20) := 'DROGA_COPY';
BEGIN
SELECT COUNT(*)
INTO COUNT_RECORDS
FROM ALL_OBJECTS
WHERE OBJECT_TYPE = 'TABLE'
AND OBJECT_NAME = NEW_TABLE;
IF COUNT_RECORDS > 0 THEN
EXECUTE IMMEDIATE 'TRUNCATE TABLE '||NEW_TABLE;
dbms_output.put_line('TABLE '||NEW_TABLE||' HAS BEEN TRUNCATED');
ELSE
EXECUTE IMMEDIATE 'CREATE TABLE '||NEW_TABLE||' AS SELECT * FROM '||BASE_TABLE||' WHERE WYCENA = '||var;
dbms_output.put_line('TABLE '||NEW_TABLE||' HAS BEEN CREATED');
END IF;
END ROUTSETTER;
错误
ORA-00933: SQL command not properly ended
ORA-06512: at "PROJEKT.ROUTSETTER", line 17
ORA-06512: at line 6
你的线路;
EXECUTE IMMEDIATE 'CREATE TABLE '||NEW_TABLE||
' AS SELECT * FROM '||BASE_TABLE||' WHERE WYCENA = '||var;
...将 var
(这是一个 varchar)直接放入 SQL 语句中,而无需适当的引用。
如果我们假设 var
没有单引号,您的行应该类似于;
EXECUTE IMMEDIATE 'CREATE TABLE '||NEW_TABLE||
' AS SELECT * FROM '||BASE_TABLE||' WHERE WYCENA = '''||var||'''';