Oracle 甲骨文功能故障
这是fu功能:Oracle 甲骨文功能故障,oracle,plsql,Oracle,Plsql,这是fu功能: create or replace FUNCTION pk_max_value(t_name VARCHAR) RETURN NUMBER is rws number; pk_column_name varchar(300); sql_text VARCHAR(2048); BEGIN sql_text := 'SELECT cols.column_name ' || 'FROM all_constraints cons, all_cons
create or replace
FUNCTION pk_max_value(t_name VARCHAR) RETURN NUMBER
is
rws number;
pk_column_name varchar(300);
sql_text VARCHAR(2048);
BEGIN
sql_text := 'SELECT cols.column_name ' ||
'FROM all_constraints cons, all_cons_columns cols ' ||
'WHERE cols.table_name = ' || t_name ||
' AND cons.constraint_type = ' || 'chr(39) P chr(39) ' ||
'AND cons.constraint_name = cols.constraint_name ' ||
'AND cons.owner = cols.owner ' ||
'ORDER BY cols.table_name, cols.position;';
execute immediate sql_text into pk_column_name;
sql_text := 'SELECT MAX(' || pk_column_name || ') FROM ' || t_name;
EXECUTE IMMEDIATE sql_text INTO rws;
RETURN rws;
END;
当我执行此操作时,Oracle会给我一个答案:
SQL命令未正确结束
有人能告诉我,我的秋天在哪里吗?第一个sql_文本不应该以
结尾代码>
应该是:
sql_text := 'SELECT cols.column_name
FROM all_constraints cons, all_cons_columns cols
WHERE cols.table_name = '''||t_name||'''
AND cons.constraint_type = ''P''
AND cons.constraint_name = cols.constraint_name
AND cons.owner = cols.owner
ORDER BY cols.table_name, cols.position';
Obs:当PK类型不是NUMBER
时,此功能将失败
Obs2:t_名称应为大写…第一个sql_文本不应以结尾代码>
应该是:
sql_text := 'SELECT cols.column_name
FROM all_constraints cons, all_cons_columns cols
WHERE cols.table_name = '''||t_name||'''
AND cons.constraint_type = ''P''
AND cons.constraint_name = cols.constraint_name
AND cons.owner = cols.owner
ORDER BY cols.table_name, cols.position';
Obs:当PK类型不是NUMBER
时,此功能将失败
Obs2:t_名称应该是大写的…我有带“number”类型PK的DB。我有带“number”类型PK的DB。