স্ক্রিপ্টগুলিতে আপনার কাছে আরও বিকল্প রয়েছে এবং যুক্তিসঙ্গত পচে যাওয়াতে আরও ভাল শট। এসকিউএলসিএমডি মোডে অনুসন্ধান করুন (ক্যোয়ারী মেনু -> এসকিউএলসিএমডি মোড), বিশেষত: সেটভার এবং: আরআরড।
সঞ্চিত পদ্ধতির মধ্যে আপনার বিকল্পগুলি খুব সীমিত। আপনি কোনও পদ্ধতির বডি দিয়ে সরাসরি কোনও ফাংশন সংজ্ঞায়িত করতে পারবেন না। ডায়নামিক এসকিউএল সহ আপনি যা করতে পারেন তা হ'ল:
create proc DoStuff
as begin
declare @sql nvarchar(max)
/*
define function here, within a string
note the underscore prefix, a good convention for user-defined temporary objects
*/
set @sql = '
create function dbo._object_name_twopart (@object_id int)
returns nvarchar(517) as
begin
return
quotename(object_schema_name(@object_id))+N''.''+
quotename(object_name(@object_id))
end
'
/*
create the function by executing the string, with a conditional object drop upfront
*/
if object_id('dbo._object_name_twopart') is not null drop function _object_name_twopart
exec (@sql)
/*
use the function in a query
*/
select object_id, dbo._object_name_twopart(object_id)
from sys.objects
where type = 'U'
/*
clean up
*/
drop function _object_name_twopart
end
go
এটি একটি বিশ্বব্যাপী অস্থায়ী ফাংশনটির সান্নিধ্য করে, যদি এরকম কিছু বিদ্যমান থাকে। এটি এখনও অন্য ব্যবহারকারীদের কাছে দৃশ্যমান। নামটি অনন্য করার জন্য আপনি নিজের সংযোগের @@ এসপিআইডি যুক্ত করতে পারেন, তবে তারপরে গতিশীল এসকিউএল ব্যবহারের জন্য বাকি প্রক্রিয়াটিরও প্রয়োজন হবে।