تنفيذ فوري

ينطبق على: وضع علامة Databricks SQL وضع علامة Databricks Runtime 14.3 وما فوق

تنفيذ عبارة SQL المقدمة ك STRING. تمرر العبارة الوسيطات اختياريا إلى علامات المعلمات وتعين النتائج إلى المتغيرات.

بناء الجملة

EXECUTE IMMEDIATE sql_string
        [ INTO var_name [, ...] ]
        [ USING { arg_expr [ AS ] [alias] } [, ...] ]

للتوافق مع لهجات SQL الأخرى، EXECUTE IMMEDIATE يدعم أيضا USING ( { arg_expr [ AS ] [alias] } [, ...] )

المعلمات

  • sql_string

    STRING حرفي أو متغير، ينتج عبارة SQL جيدة التكوين.

    لا يمكنك تضمين EXECUTE IMMEDIATE عبارات.

  • INTO ( var_name [, ...] )

    إرجاع نتائج استعلام صف واحد اختياريا إلى متغيرات SQL. إذا لم يرجع الاستعلام أي صفوف، تكون النتيجة هي NULL.

    إذا لم تكن العبارة استعلاما، فإن INVALID_STATEMENT_FOR_EXECUTE_INTO Azure Databricks يثير خطأ.

    إذا أرجع الاستعلام أكثر من صف واحد، فإن Azure Databricks يثير خطأ ROW_SUBQUERY_TOO_MANY_ROWS .

    • var_name

      متغير SQL. قد لا تتم الإشارة إلى متغير أكثر من مرة.

  • USING { arg_expr [ AS ] [alias] } [, ...]

    اختياريا، إذا كان sql_string يحتوي على علامات معلمات، يربط في القيم بالمعلمات.

    • arg_expr

      حرفي أو متغير يرتبط بعلامة معلمة. إذا كانت علامات المعلمات غير مسماة، يكون الربط حسب الموضع. بالنسبة لعلامات المعلمات المسماة، يكون الربط بالاسم.

    • alias

      يتجاوز الاسم المستخدم للربط arg_expr بعلامة معلمة مسماة. يجب مطابقة كل علامة معلمة مسماة مرة واحدة. لا يجب أن تتم مطابقة كل arg_expr شيء.

الأمثلة

-- A self-contained execution using a literal string
> EXECUTE IMMEDIATE 'SELECT SUM(c1) FROM VALUES(?), (?) AS t(c1)' USING 5, 6;
  11

-- A SQL string composed in a SQL variable
> DECLARE sqlStr = 'SELECT SUM(c1) FROM VALUES(?), (?) AS t(c1)';
> DECLARE arg1 = 5;
> DECLARE arg2 = 6;
> EXECUTE IMMEDIATE sqlStr USING arg1, arg2;
  11

-- Using the INTO clause
> DECLARE sum INT;
> EXECUTE IMMEDIATE sqlStr INTO sum USING arg1, arg2;
> SELECT sum;
  11

-- Using named parameter markers
> SET VAR sqlStr = 'SELECT SUM(c1) FROM VALUES(:first), (:second) AS t(c1)';
> EXECUTE IMMEDIATE sqlStr INTO sum
  USING (5 AS first, arg2 AS second);
> SELECT sum;
  11