Labels

admin (1) aix (1) alert (1) always-on (2) Architecture (1) aws (3) Azure (1) backup (3) BI-DWH (10) Binary (3) Boolean (1) C# (1) cache (1) casting (3) cdc (1) certificate (1) checks (1) cloud (3) cluster (1) cmd (7) collation (1) columns (1) compilation (1) configurations (7) Connection-String (2) connections (6) constraint (6) copypaste (2) cpu (2) csv (3) CTE (1) data-types (1) datetime (23) db (547) DB2 (1) deadlock (2) Denali (7) device (6) dotNet (5) dynamicSQL (11) email (5) encoding (1) encryption (4) errors (124) excel (1) ExecutionPlan (10) extended events (1) files (7) FIPS (1) foreign key (1) fragmentation (1) functions (1) GCP (2) gMSA (2) google (2) HADR (1) hashing (3) in-memory (1) index (3) indexedViews (2) insert (3) install (10) IO (1) isql (6) javascript (1) jobs (11) join (2) LDAP (2) LinkedServers (8) Linux (15) log (6) login (1) maintenance (3) mariadb (1) memory (4) merge (3) monitoring (4) MSA (2) mssql (444) mssql2005 (5) mssql2008R2 (20) mssql2012 (2) mysql (36) MySQL Shell (5) network (1) NoSQL (1) null (2) numeric (9) object-oriented (1) offline (1) openssl (1) Operating System (4) oracle (7) ORDBMS (1) ordering (2) Outer Apply (1) Outlook (1) page (1) parameters (2) partition (1) password (1) Performance (103) permissions (10) pivot (3) PLE (1) port (4) PostgreSQL (14) profiler (1) RDS (3) read (1) Replication (12) restore (4) root (1) RPO (1) RTO (1) SAP ASE (48) SAP RS (20) SCC (4) scema (1) script (8) security (10) segment (1) server (1) service broker (2) services (4) settings (75) SQL (74) SSAS (1) SSIS (19) SSL (8) SSMS (4) SSRS (6) storage (1) String (35) sybase (57) telnet (2) tempdb (1) Theory (2) tips (120) tools (3) training (1) transaction (6) trigger (2) Tuple (2) TVP (1) unix (8) users (3) vb.net (4) versioning (1) windows (14) xml (10) XSD (1) zip (1)

Find differences between types of parameters in SPs and types of the real fields

-- Developer: Victor Shahar - All rights reserved! :-)

declare @dbname sysname
set @dbname = 'Campus'
declare @cmd varchar(max)
set @cmd = 'use ' + @dbname + ';
select distinct d.id, OBJECT_NAME(d.id) as ProcedureName, d.depid, OBJECT_NAME(d.depid) as TableName
, c.name as FieldName, t.name as FieldType, c.scale, c.prec
into #tempColumns
from sys.sysdepends d
inner join sys.sysobjects o1
on d.id = o1.id
inner join sys.sysobjects o2
on d.depid = o2.id
inner join sys.syscolumns c
on d.depid = c.id
inner join sys.systypes t
on c.xtype = t.xtype
where OBJECT_NAME(d.id) not like ''sp_%''
and o1.xtype = ''P''
and o2.xtype = ''U''

select object_name(O.id) As ProcedureName, replace(C.name,''@'','''') as InputParameter
,t.name as FieldType, c.scale, c.prec
into #tempParameters
from sys.sysobjects O
inner join sys.syscolumns C 
on C.id = O.id
inner join sys.systypes t
on c.xtype = t.xtype
where O.xtype = ''P'' 
order by 1

select tc.ProcedureName, tc.TableName,
tc.FieldName, tc.FieldType, tc.scale, tc.prec,
(''@'' + tp.InputParameter) as InputParameter,
tp.FieldType, tp.scale, tp.prec
from #tempColumns tc
inner join #tempParameters tp
on  tc.ProcedureName = tp.ProcedureName
and tc.FieldName = tp.InputParameter
where
tc.FieldType != tp.FieldType
order by 1,2,3'

exec (@cmd)

No comments:

Post a Comment