আপনি কোথায় সন্ধান করবেন যেখানে একটি সঞ্চিত পদ্ধতি ব্যবহৃত হয় (অন্যান্য সঞ্চিত পদ্ধতিতে)


10

আমার কাছে একটি সঞ্চিত পদ্ধতি রয়েছে যা আমি রিফ্যাক্টর করতে চাই, এমন একটি ডাটাবেসে যেখানে কয়েক হাজার এসপি রয়েছে। অন্যান্য এসপিগুলিতে সেই সঞ্চিত পদ্ধতির রেফারেন্সগুলি খুঁজে পাওয়ার কি দ্রুত উপায় আছে যাতে আমি নিশ্চিত হতে পারি যে আমি রিফ্যাক্টর করার সময় আমি অন্য কোনও কোড ভঙ্গ করছি না।

অ্যাপ্লিকেশন কোডটিতে আমি এসপি-তে সহজেই কলগুলি সন্ধান করতে পারি এবং এসপিগুলিকে সংজ্ঞায়িত করে বিভিন্ন বিভিন্ন এসকিএল ফাইলের উপরে আমি একটি পাঠ্য অনুসন্ধান করতে পারি, তবে এটি সম্ভব নয় ডাটাবেসে কিছু এসপি থাকতে পারে যা এইভাবে মিস করা যেতে পারে ।

সম্পাদনা: যে সঞ্চিত পদ্ধতিগুলি আমি সনাক্ত করার চেষ্টা করছি সেগুলি একটি প্যাকেজের অংশ।

সম্পাদনা: আমি ওরাকল 11 জি তে চালাচ্ছি

উত্তর:


11

DBA_DEPENDENCIES ভিউতে এই জাতীয় প্রশ্নের উত্তর রয়েছে।

select * from DBA_DEPENDENCIES
  where referenced_owner='HR' and referenced_name='STORED_PROCEDURE_41';

2
আপনি যদি ডায়নামিক স্কেল ব্যবহার করেন তবে এই পদ্ধতির কাজ হবে না। অর্থাত্‍ যদি আপনি গতিশীল স্কয়ারের অংশ হিসাবে কোনও প্রক্রিয়া চালান। অন্যথায় dba_ বা সমস্ত_ নির্ভরতা দুর্দান্ত কাজ করবে।
রাজ

1
এটি সহায়ক and কোন চিন্তা?
পিটার বাগনল 14

এই ক্ষেত্রে একটি প্যাকেজ অনুসন্ধান করতে হবে। DBA_DEPENDENCIESনির্দিষ্ট বস্তুটি বাদ পড়লে কী অকার্যকর হবে তা আমাদের আরও দেখান। সুতরাং উদাহরণস্বরূপ আপনি কী সন্ধান করতে পারেন তা রেফারেন্স সারণী।
মিনডোগাস রিয়াবা

6

এটি কাজ করে বলে মনে হচ্ছে - এটি @ মিন্দাউগাসরিয়াউবার উত্তরের চেয়ে কম মার্জিত, তবে এটি সমস্ত প্যাকেজ থেকে রেফারেন্স খুঁজে পেতে পারে বলে মনে হয় না।

SELECT * FROM all_source
where UPPER(TEXT) like UPPER('%STORED_PROCEDURE_NAME%')

( কোনও পিএল / এসকিউএল প্যাকেজ, পদ্ধতি বা ফাংশন ব্যবহার করা হচ্ছে তা আপনি কীভাবে বলতে পারবেন? )


0

আমার অনুরূপ পরিস্থিতি ছিল, কেবলমাত্র একটি নির্দিষ্ট প্যাকেজ ব্যবহার করে এমন প্যাকেজগুলির তালিকা পুনরুদ্ধার করা আমার প্রয়োজন; সুতরাং আমি এই প্রশ্নটি করেছি, সম্ভবত এটি সহায়তা করে:

with dep2 as (
    select dep.*
    from all_dependencies dep
    where dep.owner not in ('SYS', 'SYSTEM', 'PUBLIC', 'XDB')
    and dep.referenced_owner not in ('SYS', 'SYSTEM', 'PUBLIC', 'XDB')
    and dep.referenced_type = 'PACKAGE'
    and dep.dependency_type != 'NON-EXISTENT'
    and (dep.referenced_owner || '.' || dep.referenced_name) != (dep.owner || '.' || dep.name)
),
dep3 as (
    select owner || '.' || name as child,
    referenced_owner || '.' || referenced_name as parent
    from dep2
)
select connect_by_root parent, lpad(' ',2*(level-1)) || to_char(child) 
from dep3
start with parent = 'SCHEMA.PACKAGE_NAME'
connect by nocycle prior child = parent 
and exists (select 1 from all_source where (owner || '.' || name) = dep3.child and upper(text) like upper('%optional, some string you may want to search%')) 
;
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.