DECLARE
inFieldName varchar(100);
str varchar(100);
inMaxId varchar(100);
inTableName varchar(100);
BEGIN
inFieldName := 'colName';
inTableName := 'TableName';
str := 'select max(:inFieldName) into :inMaxId from ' || inTableName;
EXECUTE IMMEDIATE str using inFieldName,inMaxId;
Dbms_output.put_line(inMaxId);
END;
错误提示:ORA-01006绑定变量不存在。
inFieldName varchar(100);
str varchar(100);
inMaxId varchar(100);
inTableName varchar(100);
BEGIN
inFieldName := 'colName';
inTableName := 'TableName';
str := 'select max(:inFieldName) into :inMaxId from ' || inTableName;
EXECUTE IMMEDIATE str using inFieldName,inMaxId;
Dbms_output.put_line(inMaxId);
END;
错误提示:ORA-01006绑定变量不存在。
inFieldName varchar(100);
str varchar(100);
inMaxId varchar(100);
inTableName varchar(100);
BEGIN
inFieldName := 'colName';
inTableName := 'TableName';
str := 'select max('||inFieldName||') into :inMaxId from ' || inTableName;
EXECUTE IMMEDIATE str using out inMaxId;
Dbms_output.put_line(inMaxId);
END;
DECLARE
inFieldName varchar(100);
str varchar(100);
inMaxId varchar(100);
inTableName varchar(100);
BEGIN
inFieldName := 'colName';
inTableName := 'TableName';
str := 'select max(&inFieldName) from &inTableName';
EXECUTE IMMEDIATE str into inMaxId;
Dbms_output.put_line(inMaxId);
END;Enter value for infieldname: empno
Enter value for intablename: emp
old 9: str := 'select max(&inFieldName) from &inTableName';
new 9: str := 'select max(empno) from emp';
7934PL/SQL procedure successfully completed.
SQL>
SQL> DECLARE
2 inFieldName varchar(100);
3 str varchar(100);
4 inMaxId varchar(100);
5 inTableName varchar(100);
6 BEGIN
7 inFieldName := 1;
8 inTableName := 'dual';
9 str := 'select max('||inFieldName||') from ' || inTableName;
10 EXECUTE IMMEDIATE str into inMaxId;
11 Dbms_output.put_line(inMaxId);
12 END;
13 /
1
PL/SQL procedure successfully completed
SQL>