আমার কাছে ওরাকল সিকোয়েন্সটি এর মতো সংজ্ঞায়িত হয়েছে:
CREATE SEQUENCE "DALLAS"."X_SEQ"
MINVALUE 0
MAXVALUE 999999999999999999999999999
INCREMENT BY 1 START WITH 0 NOCACHE NOORDER NOCYCLE ;
এটি একটি সঞ্চিত পদ্ধতিতে একটি রেকর্ড সন্নিবেশ করানোর জন্য ব্যবহৃত হয়:
PROCEDURE Insert_Record
(p_name IN VARCHAR2,
p_userid IN INTEGER,
cur_out OUT TYPES_PKG.RefCursor)
IS
v_id NUMBER := 0;
BEGIN
-- Get id value from sequence
SELECT x_seq.nextval
INTO v_id
FROM dual;
-- Line below is X_PKG line 40
INSERT INTO X
(the_id,
name,
update_userid)
VALUES
(v_id,
p_name,
p_userid);
-- Return new id
OPEN cur_out FOR
SELECT v_id the_id
FROM dual;
END;
কখনও কখনও, অ্যাপ্লিকেশন কোড থেকে কার্যকর করার সময় এই পদ্ধতিটি একটি ত্রুটি ফেরায়।
ORA-01400: cannot insert NULL into ("DALLAS"."X"."THE_ID")
ORA-06512: at "DALLAS.X_PKG", line 40
ORA-06512: at line 1
প্রাসঙ্গিক বা নাও হতে পারে এমন বিশদ:
- ওরাকল ডেটাবেস 11 জি এন্টারপ্রাইজ সংস্করণ প্রকাশ 11.2.0.1.0 - 64 বিট উত্পাদন
- প্রক্রিয়াটি মাইক্রোসফ্ট.প্র্যাকটিসেস.এন্টারপ্রাইজলিবারি - ডেটা.অরাকল.অরাকল্যাড ডাটাবেস.এক্সেকিউট রেডার (ডিবিকম্যান্ড কমান্ড) এর মাধ্যমে কার্যকর করা হয়
- অ্যাপ্লিকেশনটি সুস্পষ্ট লেনদেনে কলটি মোড়ায় না।
- সন্নিবেশ মাঝে মাঝে ব্যর্থ হয় - 1% এরও কম
কোন পরিস্থিতিতে x_seq.nextval
নাল হতে পারে?
v_id
কেবল সিক্যুয়েন্স সিলেক্ট, সন্নিবেশ এবং চূড়ান্ত কার্সারে উল্লেখ করা হয়। আমাদের পরবর্তী পদক্ষেপটি ছিল ডিবাগিং কোড যুক্ত করা। আমাদের ফলাফলগুলির জন্য অপেক্ষা করতে হতে পারে কারণ এটি কেবলমাত্র উত্পাদন এবং খুব কম সময়ে ঘটে। একটি ট্রিগার রয়েছে যা নিরীক্ষার টেবিলটিতে প্রবেশ করে। আমি ধূমপান বন্দুক দিয়ে ঝাঁকুনি করেছি। ট্রিগার ছাড়াই অন্যান্য টেবিলেও সমস্যাটি মাঝেমধ্যে ঘটে। দেখার জন্য ধন্যবাদ।