مشاركة عبر


فئة الخطأ UNRESOLVED_COLUMN

SQLSTATE: 42703

لا يمكن حل معلمة عمود أو متغير أو روتين باسم <objectName> .

تحتوي فئة الخطأ هذه على فئات الخطأ المشتقة التالية.

WITHOUT_SUGGESTION

المعلمات

  • objectName: اسم العمود أو المعلمة التي لا يمكن حلها.

WITH_SUGGESTION

هل تعني أحد ما يلي؟ [<proposal>]

المعلمات

  • objectName: اسم العمود أو المعلمة التي لا يمكن حلها.
  • الاقتراح: قائمة مفصولة بفواصل للمرشحين المحتملين.

الشرح

يثير Azure Databricks هذا الخطأ كلما تعذر عليه تحديد معرف في سياق حيث يتوقع عمودا أو اسما مستعارا للعمود أو معلمة دالة.

هناك عدة أسباب لهذا الخطأ:

  • خطأ إملائي في اسم العمود أو اسم المعلمة.
  • لقد قصدت بالفعل تحديد سلسلة حرفية، وليس معرفا.
  • تمت إعادة تسمية العمود أو إسقاطه باستخدام ALTER TABLE
  • لم يتم تضمين العمود في قائمة تحديد الاستعلام الفرعي.
  • تمت إعادة تسمية العمود باستخدام الاسم المستعار للجدول أو الاسم المستعار للعمود.
  • مرجع العمود مرتبط، ولم تحدد LATERAL.
  • مرجع العمود هو إلى كائن غير مرئي لأنه يظهر سابقا في نفس قائمة التحديد أو ضمن الاستعلام الفرعي العددي.

التخفيف

يعتمد التخفيف من الخطأ على السبب:

  • هل التدقيق الإملائي للاسم والمؤهلات غير صحيح؟

    قارن بالأعمدة المعروضة objectList في وقم بإصلاح التدقيق الإملائي.

  • هل كنت تقصد تحديد سلسلة حرفية بدلا من ذلك؟

    قم بإحاطة القيمة الحرفية بعلامات اقتباس مفردة، وليس علامات التجزئة الخلفية (علامة التمييز).

  • هل تم حذف العمود من الاستعلام الفرعي؟

    أضف العمود إلى قائمة تحديد الاستعلام الفرعي.

  • هل تشير إلى عمود في علاقة سابقة في نفس العبارة من؟

    LATERAL أضف الكلمة الأساسية قبل الاستعلام الفرعي مع العمود الذي لم يتم حله. دعم الاستعلام المترابط محدود. قد تحتاج إلى إعادة كتابة الاستعلام (إلغاء ربطه).

  • من غير الواضح سبب تعذر حل العمود أو الحقل؟

    راجع عمود وحقل ومعلمة ودقة متغير للحصول على وصف مفصل حول تحليل الاسم.

الأمثلة

> CREATE OR REPLACE TEMPORARY VIEW colors(cyan, magenta, yellow) AS VALUES(10, 20, 5);

-- The column reference has been misspelled
> SELECT jello FROM colors;
  [UNRESOLVED_COLUMN.WITH_SUGGESTION] A column or function parameter with name `jello` cannot be resolved.
  Did you mean one of the following? [`colors`.`cyan`, `colors`.`yellow`, `colors`.`magenta`]

-- Correct the spelling
> SELECT yellow FROM colors;
 5

-- The qualifier has been misspelled
> SELECT color.yellow FROM colors;
 [UNRESOLVED_COLUMN.WITH_SUGGESTION] A column or function parameter with name `color`.`yellow` cannot be resolved.
 Did you mean one of the following? [`colors`.`cyan`, `colors`.`yellow`, `colors`.`magenta`]

-- Correct the spelling
> SELECT colors.yellow FROM colors;
 5

-- Forgot to quote a literal
> SELECT hello;
 [UNRESOLVED_COLUMN.WITHOUT_SUGGESTION] A column or function parameter with name `hello` cannot be resolved.

-- Use single quotes
> SELECT 'hello';

-- Used the wrong quotes for a literal
> SELECT `hello`;
 [UNRESOLVED_COLUMN.WITHOUT_SUGGESTION] A column or function parameter with name `hello` cannot be resolved.

-- Use single quotes instead
> SELECT 'hello';

-- Column "got lost" in a subquery.
> SELECT cyan, magenta, yellow
    FROM (SELECT cyan, magenta
            FROM colors) AS c;
 [UNRESOLVED_COLUMN.WITH_SUGGESTION] A column or function parameter with name `yellow` cannot be resolved.
 Did you mean one of the following? [`c`.`cyan`, `c`.`magenta`]

-- Add the missing column
> SELECT cyan, magenta, yellow
    FROM (SELECT cyan, magenta, yellow
            FROM colors) AS c;
 10   20    5

-- Columns got renamed in the table alias
> SELECT cyan, magenta, yellow
    FROM (SELECT cyan, magenta, yellow
            FROM colors) AS c(c, m, y);
 [UNRESOLVED_COLUMN.WITH_SUGGESTION] A column or function parameter with name `cyan` cannot be resolved.
 Did you mean one of the following? [`c`.`c`, `c`.`m`, `c`.`y`];

-- Adjust the names
> SELECT c, m, y
    FROM (SELECT cyan, magenta, yellow
            FROM colors) AS c(c, m, y);
 10   20    5

-- A correlated reference
> SELECT * FROM colors, (SELECT cyan + magenta + yellow AS total_use);
 [UNRESOLVED_COLUMN.WITHOUT_SUGGESTION] A column or function parameter with name `cyan` cannot be resolved.

-- Add LATERAL to permit correation
> SELECT * FROM colors, LATERAL(SELECT cyan + magenta + yellow AS total_use);
 10    20     5    35

-- Or de-correlate
> SELECT *, cyan + magenta + yellow AS total_use FROM colors;
 10    20     5    35

-- A misspelled parameter name
> CREATE OR REPLACE FUNCTION plus(a INT, b INT) RETURNS INT RETURN arg1 + arg2;
 [UNRESOLVED_COLUMN.WITH_SUGGESTION] A column or function parameter with name `arg1` cannot be resolved.
 Did you mean one of the following? [`plus`.`a`, `plus`.`b`]

-- Fix the names
> CREATE OR REPLACE FUNCTION plus(a INT, b INT) RETURNS INT RETURN a + b;
> SELECT plus(1, 2);
 3