Monday, 9 November 2015

how to create and use table variable

create User Defined Table type in Programmability in sql
my table type is 


1)    CREATE TYPE [dbo].[sitenamelist] AS TABLE(
[siteid] [int] NULL,
[Userid] [int] NULL,
[isdeleted] [bit] NULL,
[createdby] [int] NULL,
[modifiedby] [int] NULL
)

2) calll table type in storedprocedure
 @sitelist as sitenamelist READONLY

INSERT INTO MDTM_AdminSiteLink (SiteID,UserId,IsDeleted,[DateCreated], [CreatedBy]) select SiteID,Userid,isdeleted,GETDATE(),CreatedBy from sitenamelist


3)pass parameter in data layer
 comd.Parameters.AddWithValue("@sitelist", sitelist);

create get set DataTable Type in business entity
private DataTable _sitelist;
        public DataTable sitelist
        {
            get { return _sitelist; }
            set { _sitelist = value; }
        }

dynamic sub query with stuff


  1.  Here MDTM_Site  and MDTM_Hierarchy  is a table
  2. create #temphierachy   temporary table
  3. stuff use for comma seprated value in one row sitename wise




select ms.SiteID ,ms.sitename, mh.LinkedToSite as linksite,
(select SiteName from MDTM_Site where siteid=mh.linkedtosite) as LinkedSiteName
into #temphierachy
from MDTM_Hierarchy mh join MDTM_Site ms on mh.SiteID=ms.SiteID
where mh.NetworkID=@NetworkId and mh.IsDeleted=0

      select distinct sitename, siteid ,
        STUFF((SELECT distinct ', ' + LinkedSiteName
         FROM #temphierachy where sitename = t.sitename
       
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(255)')
        ,1,1,'')  AS LinkSiteName
       
      from #temphierachy t order by t.sitename DESC

Writting common Dataaccess layer for MYSQL, Oracle and SQL server by using enterprise library