Oracle SQL Error : 00909. 00000 - "invalid number of arguments" in SELECT subquery
Oracle SQL Error : 00909. 00000 - "invalid number of arguments" in SELECT subquery
我第一次在公司使用oracle数据库,遇到了这个问题
SELECT w.TABLE_NAME tbl_nm,
MAX(CASE WHEN t.partition_range LIKE 'year' THEN SUBSTR((w.PARTITION_NAME),1, LENGTH(w.PARTITION_NAME)-4) ELSE concat(SUBSTR((w.PARTITION_NAME), 1, LENGTH(w.PARTITION_NAME)-6)) END) AS par_nm,
MAX(CASE WHEN t.partition_range LIKE 'year' THEN SUBSTR((w.PARTITION_NAME), LENGTH(w.PARTITION_NAME)-3,4) ELSE concat(SUBSTR((w.PARTITION_NAME), LENGTH(w.PARTITION_NAME)-5,6)) END) AS par_date,
t.partition_range par_range,
t.data_dir data_dir,
t.index_dir index_dir,
t.add_range add_range,
CASE WHEN t.partition_range LIKE 'year' THEN EXTRACT(YEAR FROM systimestamp) ELSE TO_CHAR(systimestamp, 'YYYYMM') END AS cur_date
FROM INFORMATION_SCHEMA.PARTITIONS w, t_partition_manage t
WHERE w.TABLE_NAME = t.TABLE_NAME
GROUP BY w.TABLE_NAME
当我 Select tbl_nm
, par_nm
, par_date
, par_range
, data_dir
, index_dir
, add_range
、cur_date
来自 INFORMATION_SCHEMA.PARTITIONS
和 t_partition_manage
、
MAX( ... )
似乎有问题,我不知道出了什么问题...
这是错误代码
00909. 00000 - "invalid number of arguments"
*Cause:
*Action:
并且我使用 SQLDeveloper 作为客户端。
看起来像CONCAT
;它需要两个参数,而你的只有一个。
CONCAT (SUBSTR ((w.PARTITION_NAME), 1, LENGTH (w.PARTITION_NAME) - 6))
concat
有一个问题,因为它需要两个参数,而您只传递一个参数。 Concat
在您的解决方案中根本不需要:
SUBSTR(w.PARTITION_NAME, 1, LENGTH(w.PARTITION_NAME)-6)
和
SUBSTR(w.PARTITION_NAME), LENGTH(w.PARTITION_NAME)-5,6)
此外,您需要在 GROUP BY
中添加更多列,因为 select 不能直接使用不在 GROUP BY
子句中的列,或者您可以使用聚合函数。
我第一次在公司使用oracle数据库,遇到了这个问题
SELECT w.TABLE_NAME tbl_nm,
MAX(CASE WHEN t.partition_range LIKE 'year' THEN SUBSTR((w.PARTITION_NAME),1, LENGTH(w.PARTITION_NAME)-4) ELSE concat(SUBSTR((w.PARTITION_NAME), 1, LENGTH(w.PARTITION_NAME)-6)) END) AS par_nm,
MAX(CASE WHEN t.partition_range LIKE 'year' THEN SUBSTR((w.PARTITION_NAME), LENGTH(w.PARTITION_NAME)-3,4) ELSE concat(SUBSTR((w.PARTITION_NAME), LENGTH(w.PARTITION_NAME)-5,6)) END) AS par_date,
t.partition_range par_range,
t.data_dir data_dir,
t.index_dir index_dir,
t.add_range add_range,
CASE WHEN t.partition_range LIKE 'year' THEN EXTRACT(YEAR FROM systimestamp) ELSE TO_CHAR(systimestamp, 'YYYYMM') END AS cur_date
FROM INFORMATION_SCHEMA.PARTITIONS w, t_partition_manage t
WHERE w.TABLE_NAME = t.TABLE_NAME
GROUP BY w.TABLE_NAME
当我 Select tbl_nm
, par_nm
, par_date
, par_range
, data_dir
, index_dir
, add_range
、cur_date
来自 INFORMATION_SCHEMA.PARTITIONS
和 t_partition_manage
、
MAX( ... )
似乎有问题,我不知道出了什么问题...
这是错误代码
00909. 00000 - "invalid number of arguments"
*Cause:
*Action:
并且我使用 SQLDeveloper 作为客户端。
看起来像CONCAT
;它需要两个参数,而你的只有一个。
CONCAT (SUBSTR ((w.PARTITION_NAME), 1, LENGTH (w.PARTITION_NAME) - 6))
concat
有一个问题,因为它需要两个参数,而您只传递一个参数。 Concat
在您的解决方案中根本不需要:
SUBSTR(w.PARTITION_NAME, 1, LENGTH(w.PARTITION_NAME)-6)
和
SUBSTR(w.PARTITION_NAME), LENGTH(w.PARTITION_NAME)-5,6)
此外,您需要在 GROUP BY
中添加更多列,因为 select 不能直接使用不在 GROUP BY
子句中的列,或者您可以使用聚合函数。