OracleエラーORA-01722:無効な番号

クエリステートメントでエラーが報告されました:無効な番号

上記の赤丸で囲まれたサブクエリステートメントの実行結果は次のとおりです。

これは文字列型フィールドであり、クエリステートメント全体で「261,301」にコンパイルされます。これは文字列です。前のC.ROLE_IDフィールドは型番号であり、inキーワードの前後のフィールド型に一貫性がありません。エラーが発生します。

 

解決策は、赤で囲まれたサブクエリの結果を表形式に変換することです。ステートメントは次のとおりです。

 TP_USER_INFO t1、table(split(t1.ROLE_ID、 '、'))t2 WHERE t1.NAME = 'user1'からt2。*を選択します。

実行結果は以下のとおりです。

 

変更が完了した後、完全なクエリステートメント:

SELECT A. * FROM TP_RIGHT A
        INNER JOIN tp_role_right B ON A.CODE = B.RIGHT_CODE AND NODE_TYPE = 0 AND A.LEVELS = 1
        INNER JOIN TP_ROLE C ON B.ROLE_ID = C.ROLE_ID
        where A.SYSFLAG = 0andC
        。 ROLE_ID in(selectt2。* from TP_USER_INFO t1、table(split(t1.ROLE_ID、 '、'))t2 WHERE t1.NAME = 'user1')
        ORDER BY SORT_NUM

この時点でステートメントを実行すると、エラーは報告されなくなります。

 

おすすめ

転載: blog.csdn.net/liangmengbk/article/details/110472543