وظيفة التحديث في كيو
-
08-07-2019 - |
سؤال
ولدي سؤال بخصوص وظيفة التحديث أنا خلقت ...
CREATE OR REPLACE FUNCTION rm_category_update(icompany bpchar, iraw_mat_cat_code bpchar, iraw_mat_cat_desc bpchar)
RETURNS character AS
$BODY$
DECLARE
loc_result CHAR(50);
BEGIN
UPDATE rm_category
SET
raw_mat_cat_code = iraw_mat_cat_code,
raw_mat_cat_desc = iraw_mat_cat_desc
WHERE company = icompany;
loc_result = 'success';
RETURN loc_result ;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION rm_category_update(icompany bpchar, iraw_mat_cat_code bpchar, iraw_mat_cat_desc bpchar) OWNER TO postgres;
حسنا، حتى لو كنت إدخال السجل الذي لا وجود له، على سبيل المثال 9، فإنها ترجع النجاح على الرغم من أنني أعلم أنه قد حدث شيء!
هل SQL لا رمي الأخطاء إذا كان تحديث صف غير موجود ؟؟
والشكر
المحلول
وذلك يعتمد على نظم إدارة قواعد البيانات - ولكن لا، لا ينبغي أن رمي خطأ. وفقا لمعيار SQL (ISO / IEC 9075: 2008 في هذه الأيام)، وينبغي أن تعيين الشرط SQLNOTFOUND (+100)، وهي منفصلة عن أي حالة الخطأ. (مع ينفورميكس، إذا كنت تستخدم قاعدة بيانات MODE ANSI، يمكنك الحصول على SQLNOTFOUND، وإذا كنت تستخدم قاعدة بيانات غير ANSI، يمكنك الحصول على 0 (أي خطأ) كشرط أسباب التي تسبق تاريخ الأصلي SQL-86 مستوى. )
لاحظ أن SQL هي لغة القائم على مجموعة. ما الذي طلبته هو أن بيان تحديث مجموعة من (مطابقة) الصفوف - ويصح تماما لتحديث مجموعة تحتوي على صفر (مطابقة) الصفوف
نصائح أخرى
هل يمكن استخدام "وجدت" لاكتشاف ما إذا كان يؤثر على بيان آخر واحد أو أكثر من الصفوف، انظر> وأ href = "http://www.postgresql.org/docs/8.3/interactive/plpgsql-statements.html#PLPGSQL العبارات الترويجية-DIAGNOSTICS "يختلط =" نوفولو noreferrer "> دليل .
مثال:
-- snippet
IF FOUND THEN
loc_result = 'success';
ELSE
loc_result = 'failed'; -- or something similiar...
END IF;