[SQL SERVER]撰寫Stored Procedure小細節
— 兩節式命名
select * from dbo.test exec dbo.myproc
— 避免
select * from test exec myproc




Last updated
— 兩節式命名
select * from dbo.test exec dbo.myproc
— 避免
select * from test exec myproc




Last updated
--usp開頭create proc dbo.usp_xxx--避免create proc dbo.sp_xxxdeclare @myquery nvarchar(4000);set @myquery = 'SELECT * from dbo.test2 where c1 = @id';--第一次execute sp_executesql @myquery,N'@id int', @id = 1;--第二次execute sp_executesql @myquery,N'@id int', @id = 2;--查看執行計畫SELECT cap.usecounts as '使用次數',objtype as '快取類型',st.textFROM sys.dm_exec_cached_plans capCROSS APPLY sys.dm_exec_sql_text(plan_handle) AS stWHERE st.text not like '%sys%'and st.text like '%dbo.test2%'DECLARE @myquery VARCHAR(8000)
,@myid int;
set @myid = 5;
set @myquery = 'select * from dbo.test2 where c1 = '+ CAST( @myid as varchar);
--第一次
exec (@myquery)
set @myid = 6;
set @myquery = 'select * from dbo.test2 where c1 = '+ CAST(@myid as varchar );
--第二次
exec (@myquery)
SELECT cap.usecounts as '使用次數',objtype as '快取類型',st.text
FROM sys.dm_exec_cached_plans cap
CROSS APPLY sys.dm_exec_sql_text(plan_handle) AS st
WHERE st.text not like '%sys%'
and st.text like '%dbo.test2%'