EXECUTE IMMEDIATE 문을 실행하려고합니다. 하지만 아래 오류가 나타납니다. 나는 이것을 새로운 것으로 시험하고있다, 나는 기존의 글을 읽는다.즉시 실행 Oracle
나는 아래의 예를보고 나서 이것을 시도하고있다. http://docs.oracle.com/cd/B13789_01/appdev.101/b10807/13_elems017.htm
그것은 잘못된 테이블 이름은 말한다, 그러나 표는, 나는 또한이 옵션을 시도
Create OR REPLACE PROCEDURE Maxtable
(ITableName VarChar2,
IColumnName VarChar2)
AS
Limit1 int;
RESULT1 INT;
Query1 varChar(255);
TableName VarChar(50);
ColumnName VarChar(50);
BEGIN
Limit1 := 99999;
MaxTableId := 0;
Result1 := 0;
TableName := ltrim(rtrim(ITableName));
ColumnName := ltrim(rtrim(iColumnName));
DBMS_OUTPUT.PUT_LINE(TableName || ColumnName);
IF (TableName is not null and ColumnName is not null) then
Query1 := 'SELECT MAX(:1) FROM :2 WHERE :1 <= 99999' ;
DBMS_OUTPUT.PUT_LINE(Query1);
EXECUTE IMMEDIATE Query1 INTO Result1 USING ColumnName, TableName;
END IF;
DBMS_OUTPUT.PUT_LINE(Result1);
MaxTableId := Result1;
IF (MaxTableId = Limit1) THEN
MaxTableId := -1;
ELSE
MaxTableId := MaxTableId + 1 ;
END IF;
END adm_getMaxTableIdLimited;
내가 COLUMNNAME AS TABLE NAME, CNTRYID AS CNTRY을 전달하고
Connecting to the database Local
ORA-00903: invalid table name
ORA-06512: at "MMM.Maxtable", line 26
ORA-06512: at line 9
CNTRYCNTRYID
SELECT MAX(:1) FROM :2 WHERE :1 <= 99999
Process exited.
Disconnecting from the database oraclesrv.local.
존재의 작동하지 않습니다.
데이터베이스에 연결 중입니다. ORA-00905 : 누락 키워드 ORA-06512 "mmm.Maxtable"에서, 라인 (19) ORA-06512 : 라인 9 SELECT 최대 CNTRYID < = 99999 프로세스 종료 CNTRY FROM 결과 1 INTO (CNTRYID)에서. 데이터베이스 oraclesrv.local에서 연결을 끊습니다.
Create OR REPLACE PROCEDURE Maxtable
(TableName VarChar2,
ColumnName VarChar2,
MaxTableId OUT Int)
AS
Limit1 int;
RESULT1 INT;
Query1 varChar(255);
BEGIN
Limit1 := 99999;
MaxTableId := 0;
Result1 := 0;
IF (TableName is not null and ColumnName is not null) then
Query1 := 'SELECT max(' || ColumnName || ') INTO Result1' || ' FROM ' || TableName || ' WHERE ' || ColumnName || ' <= ' || 99999 ;
DBMS_OUTPUT.PUT_LINE(Query1);
EXECUTE IMMEDIATE Query1;
END IF;
DBMS_OUTPUT.PUT_LINE(Result1);
MaxTableId := Result1;
IF (MaxTableId = Limit1) THEN
MaxTableId := -1;
ELSE
MaxTableId := MaxTableId + 1 ;
END IF;
END Maxtable;
가 나는 또한 작동하지 thisoption이 시도. 데이터베이스 oraclesrv.local에 연결 중입니다. ORA-00905 : 누락 키워드 ORA-06512 "mmm.Maxtable"에서, 라인 (19) ORA-06512 : CNTRYID <= 99999 프로세스 종료 COTRY FROM 광고 결과 1 INTO 9 SELECT 맥스 (COUNTRYID)에서. – user3127462
EXECUTE IMMEDIATE에서 SELECT INTO를 사용할 수 있는지 확신하지 못합니다. EXECUTE IMMEDIATE의 INTO를 사용해야합니다. EXECUTE IMMEDIATE sql_stmt INTO emp_rec USING emp_id; –