التنسيق RAISERROR الرسائل في SYBASE ASE 12.5
-
21-08-2019 - |
سؤال
في إجراء مخزن, أنا أحاول اختبار إذا كانت المعلمة فارغة أو أقل ثم 1 ، إذا رفع خطأ مع رسالة ودية و قيمة المعلمة.
هنا هو بلدي رمز:
IF @ID IS NULL OR @ID <= 0
BEGIN
RAISERROR 27001 'ID is ?????. ID cannot be null or less then zero.'
RETURN 27001
END
ما أود العودة هو إما:
"معرف 0.معرف لا يمكن أن تكون فارغة أو أقل من الصفر." أو "معرف باطل.معرف لا يمكن أن تكون فارغة أو أقل من الصفر."
لقد حاولت بناء varchar ورفع مثل هذا الخطأ:
RAISERROR 27001 @message
ولكن الذي ينتج الخطأ "رسالة رقم 27001 ، مرت إلى RAISERROR ، لا وجود لها في sysmessages الكتالوج."
المحلول 2
وهذا يعمل، على الرغم من أن قيمةID من NULL يكتب بها باعتبارها سلسلة فارغة.
IF @ID IS NULL OR @ID <= 0
BEGIN
DECLARE @msg varchar(250)
SELECT @msg = 'ID is ' + Convert(varchar(15), @ID) + '. Value cannot be null or less then zero'
RAISERROR 27001 @msg
RETURN 27001
END
نصائح أخرى
المشكلة هي:تحتاج إلى إضافة المخصصة الخاصة بك خطأ # في قاعدة البيانات عن طريق الاتصال sp_addmessage:
sp_addmessage 27001, "ID is %1. ID cannot be null or less than zero."
ثم يمكنك استدعاء RAISERROR مثل لديك أعلاه أو مثل هذا (إذا كنت ترغب في استخدام الرسالة سلسلة المعرفة في sp_addmessage):
RAISERROR 27001, @ID
تحرير:(معالجة التعليق)
أولا, إذا كنت تميل ذلك فقط سجل 27001 مع الموضعية حجة الرسالة:
sp_addmessage 27001, "%1"
ثانيا أنت لا يضطر إلى العرض الافتراضي الرسالة التي كنت قد سجلت باستخدام sp_addmessage;مثل هذا يجب عرض رسالة منفصلة بغض النظر عن الرسالة الافتراضي هو:
RAISERROR 27001 @message