Rumah pangkalan data tutorial mysql 收藏几段SQL Server语句和存储过程

收藏几段SQL Server语句和存储过程

Jun 07, 2016 pm 03:04 PM
server sql beberapa penyimpanan mengumpul kenyataan proses

收藏 几段SQL Server 语句 和 存储 过程 (标准化越来越近了) :namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> -- ====================================================== --列出sql server (WINDOWS平台上强大的数据库平台) 所

收藏几段SQL  Server语句存储过程(标准化越来越近了):namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

-- ======================================================

--列出sql server(WINDOWS平台上强大的数据库平台) 所有表,字段名,主键,类型,长度,小数位数等信息

--在查询分析器里运行即可,可以生成一个表,导出到EXCEL中

-- ======================================================

SELECT

    (case when a.colorder=1 then d.name else '' end)表名,

    a.colorder 字段序号,

    a.name 字段名,

    (case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' end) 标识,

    (case when (SELECT count(*)

    FROM sysobjects

    WHERE (name in

          (SELECT name

         FROM sysindexes

          WHERE (id = a.id) AND (indid in

               (SELECT indid

              FROM sysindexkeys

              WHERE (id = a.id) AND (colid in

                   (SELECT colid

                   FROM syscolumns

                  WHERE (id = a.id) AND (name = a.name))))))) AND

        (xtype = 'PK'))>0 then '√' else '' end) 主键,

    b.name 类型,

    a.length 占用字节数,

    COLUMNPROPERTY(a.id,a.name,'PRECISION') as 长度,

    isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0) as 小数位数,

    (case when a.isnullable=1 then '√'else '' end) 允许空,

    isnull(e.text,'') 默认值,

    isnull(g.[value],'') AS 字段说明  

 

FROM  syscolumns  a left join systypes b

on  a.xtype=b.xusertype

inner join sysobjects d

on a.id=d.id  and  d.xtype='U' and  d.name'dtproperties'

left join syscomments e

on a.cdefault=e.id

left join sysproperties g

on a.id=g.id AND a.colid = g.smallid 

order by a.id,a.colorder

-------------------------------------------------------------------------------------------------

 

 

 

 

 

 

列出sql server(WINDOWS平台上强大的数据库平台) 所有表、字段定义,类型,长度,一个值等信息

并导出到Excel 中

-- ======================================================

-- Export all user tables definition and one sample value

-- jan-13-2003,Dr.Zhang

-- ======================================================

在查询分析器里运行:

SET ANSI_NULLS OFF

GO

SET NOCOUNT ON

GO

 

SET LANGUAGE 'Simplified Chinese'

go

DECLARE @tbl nvarchar(200),@fld nvarchar(200),@sql nvarchar(4000),@maxlen int,@sample nvarchar(40)

 

SELECT d.name TableName,a.name FieldName,b.name TypeName,a.length Length,a.isnullable IS_NULL INTO #t

FROM  syscolumns  a,  systypes b,sysobjects d 

WHERE  a.xtype=b.xusertype  and  a.id=d.id  and  d.xtype='U'

 

DECLARE read_cursor CURSOR

FOR SELECT TableName,FieldName FROM #t

 

SELECT TOP 1 '_TableName           ' TableName,

       'FieldName            ' FieldName,'TypeName       ' TypeName,

       'Length' Length,'IS_NULL' IS_NULL,

       'MaxLenUsed' AS MaxLenUsed,'Sample Value      ' Sample,

       'Comment  ' Comment INTO #tc FROM #t

 

OPEN read_cursor

 

FETCH NEXT FROM read_cursor INTO @tbl,@fld

WHILE (@@fetch_status -1)  --- failes

BEGIN

    IF (@@fetch_status -2) -- Missing

    BEGIN

        SET @sql=N'SET @maxlen=(SELECT max(len(cast('+@fld+' as nvarchar))) FROM '+@tbl+')'

        --PRINT @sql

        EXEC SP_EXECUTESQL @sql,N'@maxlen int OUTPUT',@maxlen OUTPUT

        --print @maxlen

        SET @sql=N'SET @sample=(SELECT TOP 1 cast('+@fld+' as nvarchar) FROM '+@tbl+' WHERE len(cast('+@fld+' as nvarchar))='+convert(nvarchar(5),@maxlen)+')'

        EXEC SP_EXECUTESQL @sql,N'@sample varchar(30) OUTPUT',@sample OUTPUT

        --for quickly 

        --SET @sql=N'SET @sample=convert(varchar(20),(SELECT TOP 1 '+@fld+' FROM '+

           --@tbl+' order by 1 desc ))' 

        PRINT @sql

        print @sample

        print @tbl

        EXEC SP_EXECUTESQL @sql,N'@sample nvarchar(30) OUTPUT',@sample OUTPUT

        INSERT INTO #tc SELECT *,ltrim(ISNULL(@maxlen,0)) as MaxLenUsed,

           convert(nchar(20),ltrim(ISNULL(@sample,' '))) as Sample,' ' Comment FROM #t where TableName=@tbl and FieldName=@fld

    END

    FETCH NEXT FROM read_cursor INTO @tbl,@fld

END

 

CLOSE read_cursor

DEALLOCATE read_cursor

GO

 

SET ANSI_NULLS ON

GO

SET NOCOUNT OFF

GO

select count(*)  from #t

DROP TABLE #t

GO

 

select count(*)-1  from #tc

 

select * into ##tx from #tc order by tablename

DROP TABLE #tc

 

--select * from ##tx

 

declare @db nvarchar(60),@sql nvarchar(3000)

set @db=db_name()

--请修改用户名和口令 导出到Excel 中

set @sql='exec master.dbo.xp_cmdshell ''bcp ..dbo.##tx out c:\'+@db+'_exp.xls -w -C936 -(标准化越来越近了):namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />Usa -Psa '''

print @sql

exec(@sql)

GO

DROP TABLE ##tx

GO

 

 

 

-- ======================================================

--根据表中数据生成insert语句存储过程

--建立存储过程,执行 spGenInsertSQL 表名

--感谢playyuer

-- ======================================================

CREATE  proc spGenInsertSQL (@tablename varchar(256))

 

as

begin

  declare @sql varchar(8000)

  declare @sqlValues varchar(8000)

  set @sql =' ('

  set @sqlValues = 'values (''+'

  select @sqlValues = @sqlValues + cols + ' + '','' + ' ,@sql = @sql + '[' + name + '],'

   from

     (select case

          when xtype in (48,52,56,59,60,62,104,106,108,122,127)                

            then 'case when '+ name +' is null then ''NULL'' else ' + 'cast('+ name + ' as varchar)'+' end'

          when xtype in (58,61)

            then 'case when '+ name +' is null then ''NULL'' else '+''''''''' + ' + 'cast('+ name +' as varchar)'+ '+'''''''''+' end'

          when xtype in (167)

            then 'case when '+ name +' is null then ''NULL'' else '+''''''''' + ' + 'replace('+ name+','''''''','''''''''''')' + '+'''''''''+' end'

          when xtype in (231)

            then 'case when '+ name +' is null then ''NULL'' else '+'''N'''''' + ' + 'replace('+ name+','''''''','''''''''''')' + '+'''''''''+' end'

          when xtype in (175)

            then 'case when '+ name +' is null then ''NULL'' else '+''''''''' + ' + 'cast(replace('+ name+','''''''','''''''''''') as Char(' + cast(length as varchar)  + '))+'''''''''+' end'

          when xtype in (239)

            then 'case when '+ name +' is null then ''NULL'' else '+'''N'''''' + ' + 'cast(replace('+ name+','''''''','''''''''''') as Char(' + cast(length as varchar)  + '))+'''''''''+' end'

          else '''NULL'''

         end as Cols,name

      from syscolumns 

      where id = object_id(@tablename)

     ) T

  set @sql ='select ''INSERT INTO ['+ @tablename + ']' + left(@sql,len(@sql)-1)+') ' + left(@sqlValues,len(@sqlValues)-4) + ')'' from '+@tablename

  --print @sql

  exec (@sql)

end

 

GO

 

 

 

-- ======================================================

--根据表中数据生成insert语句存储过程

--建立存储过程,执行 proc_insert 表名

--感谢Sky_blue

-- ======================================================

 

CREATE proc proc_insert (@tablename varchar(256))

as

begin

    set nocount on

    declare @sqlstr varchar(4000)

    declare @sqlstr1 varchar(4000)

    declare @sqlstr2 varchar(4000)

    select @sqlstr='select ''insert '+@tablename

    select @sqlstr1=''

    select @sqlstr2=' ('

    select @sqlstr1= ' values ( ''+'

    select @sqlstr1=@sqlstr1+col+'+'',''+' ,@sqlstr2=@sqlstr2+name +',' from (select case

--   when a.xtype =173 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar('+convert(varchar(4),a.length*2+2)+'),'+a.name +')'+' end'

    when a.xtype =104 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(1),'+a.name +')'+' end'

    when a.xtype =175 then 'case when '+a.name+' is null then ''NULL'' else '+'''''''''+'+'replace('+a.name+','''''''','''''''''''')' + '+'''''''''+' end'

    when a.xtype =61  then 'case when '+a.name+' is null then ''NULL'' else '+'''''''''+'+'convert(varchar(23),'+a.name +',121)'+ '+'''''''''+' end'

    when a.xtype =106 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar('+convert(varchar(4),a.xprec+2)+'),'+a.name +')'+' end'

    when a.xtype =62  then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(23),'+a.name +',2)'+' end'

    when a.xtype =56  then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(11),'+a.name +')'+' end'

    when a.xtype =60  then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(22),'+a.name +')'+' end'

    when a.xtype =239 then 'case when '+a.name+' is null then ''NULL'' else '+'''''''''+'+'replace('+a.name+','''''''','''''''''''')' + '+'''''''''+' end'

    when a.xtype =108 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar('+convert(varchar(4),a.xprec+2)+'),'+a.name +')'+' end'

    when a.xtype =231 then 'case when '+a.name+' is null then ''NULL'' else '+'''''''''+'+'replace('+a.name+','''''''','''''''''''')' + '+'''''''''+' end'

    when a.xtype =59  then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(23),'+a.name +',2)'+' end'

    when a.xtype =58  then 'case when '+a.name+' is null then ''NULL'' else '+'''''''''+'+'convert(varchar(23),'+a.name +',121)'+ '+'''''''''+' end'

    when a.xtype =52  then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(12),'+a.name +')'+' end'

    when a.xtype =122 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(22),'+a.name +')'+' end'

    when a.xtype =48  then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(6),'+a.name +')'+' end'

--   when a.xtype =165 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar('+convert(varchar(4),a.length*2+2)+'),'+a.name +')'+' end'

    when a.xtype =167 then 'case when '+a.name+' is null then ''NULL'' else '+'''''''''+'+'replace('+a.name+','''''''','''''''''''')' + '+'''''''''+' end'

    else '''NULL'''

    end as col,a.colid,a.name

    from syscolumns a where a.id = object_id(@tablename) and a.xtype 189 and a.xtype 34 and a.xtype 35 and  a.xtype 36

    )t order by colid

   

    select @sqlstr=@sqlstr+left(@sqlstr2,len(@sqlstr2)-1)+') '+left(@sqlstr1,len(@sqlstr1)-3)+')'' from '+@tablename

--  print @sqlstr

    exec( @sqlstr)

    set nocount off

end

GO

1 2 3 4 5 6  下一页

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial Java
1664
14
Tutorial PHP
1267
29
Tutorial C#
1239
24
Apakah perbezaan antara HQL dan SQL dalam rangka kerja Hibernate? Apakah perbezaan antara HQL dan SQL dalam rangka kerja Hibernate? Apr 17, 2024 pm 02:57 PM

HQL dan SQL dibandingkan dalam rangka kerja Hibernate: HQL (1. Sintaks berorientasikan objek, 2. Pertanyaan bebas pangkalan data, 3. Keselamatan jenis), manakala SQL mengendalikan pangkalan data secara langsung (1. Piawaian bebas pangkalan data, 2. Boleh laku kompleks pertanyaan dan manipulasi data).

Penggunaan operasi bahagian dalam Oracle SQL Penggunaan operasi bahagian dalam Oracle SQL Mar 10, 2024 pm 03:06 PM

"Penggunaan Operasi Bahagian dalam OracleSQL" Dalam OracleSQL, operasi bahagi ialah salah satu operasi matematik yang biasa. Semasa pertanyaan dan pemprosesan data, operasi pembahagian boleh membantu kami mengira nisbah antara medan atau memperoleh hubungan logik antara nilai tertentu. Artikel ini akan memperkenalkan penggunaan operasi pembahagian dalam OracleSQL dan memberikan contoh kod khusus. 1. Dua cara operasi bahagi dalam OracleSQL Dalam OracleSQL, operasi bahagi boleh dilakukan dalam dua cara berbeza.

Perbandingan dan perbezaan sintaks SQL antara Oracle dan DB2 Perbandingan dan perbezaan sintaks SQL antara Oracle dan DB2 Mar 11, 2024 pm 12:09 PM

Oracle dan DB2 ialah dua sistem pengurusan pangkalan data hubungan yang biasa digunakan, setiap satunya mempunyai sintaks dan ciri SQL tersendiri. Artikel ini akan membandingkan dan membezakan antara sintaks SQL Oracle dan DB2, dan memberikan contoh kod khusus. Sambungan pangkalan data Dalam Oracle, gunakan pernyataan berikut untuk menyambung ke pangkalan data: CONNECTusername/password@database Dalam DB2, pernyataan untuk menyambung ke pangkalan data adalah seperti berikut: CONNECTTOdataba

Penjelasan terperinci tentang fungsi Set tag dalam teg SQL dinamik MyBatis Penjelasan terperinci tentang fungsi Set tag dalam teg SQL dinamik MyBatis Feb 26, 2024 pm 07:48 PM

Tafsiran teg SQL dinamik MyBatis: Penjelasan terperinci tentang penggunaan teg Set MyBatis ialah rangka kerja lapisan kegigihan yang sangat baik Ia menyediakan banyak teg SQL dinamik dan boleh membina pernyataan operasi pangkalan data secara fleksibel. Antaranya, tag Set ialah tag yang digunakan untuk menjana klausa SET dalam kenyataan UPDATE, yang sangat biasa digunakan dalam operasi kemas kini. Artikel ini akan menerangkan secara terperinci penggunaan teg Set dalam MyBatis dan menunjukkan kefungsiannya melalui contoh kod tertentu. Apakah itu Set tag Set tag digunakan dalam MyBati

Huawei akan melancarkan produk storan MED yang inovatif tahun depan: kapasiti rak melebihi 10 PB dan penggunaan kuasa kurang daripada 2 kW Huawei akan melancarkan produk storan MED yang inovatif tahun depan: kapasiti rak melebihi 10 PB dan penggunaan kuasa kurang daripada 2 kW Mar 07, 2024 pm 10:43 PM

Laman web ini melaporkan pada 7 Mac bahawa Dr. Zhou Yuefeng, Presiden Barisan Produk Penyimpanan Data Huawei, baru-baru ini menghadiri persidangan MWC2024 dan secara khusus menunjukkan penyelesaian penyimpanan magnetoelektrik OceanStorArctic generasi baharu yang direka untuk data hangat (WarmData) dan data sejuk (ColdData). Zhou Yuefeng, Presiden barisan produk penyimpanan data Huawei, mengeluarkan satu siri penyelesaian inovatif Sumber imej: Siaran akhbar rasmi Huawei yang dilampirkan pada tapak ini adalah seperti berikut: Kos penyelesaian ini adalah 20% lebih rendah daripada pita magnetik. penggunaan kuasa adalah 90% lebih rendah daripada cakera keras. Menurut bloksandfiles media teknologi asing, jurucakap Huawei turut mendedahkan maklumat tentang penyelesaian storan magnetoelektrik: Cakera magnetoelektronik (MED) Huawei ialah inovasi utama dalam media storan magnetik. Generasi pertama ME

Cara memasang, menyahpasang dan menetapkan semula sandaran pelayan Windows Cara memasang, menyahpasang dan menetapkan semula sandaran pelayan Windows Mar 06, 2024 am 10:37 AM

WindowsServerBackup ialah fungsi yang disertakan dengan sistem pengendalian WindowsServer, direka untuk membantu pengguna melindungi data penting dan konfigurasi sistem, serta menyediakan penyelesaian sandaran dan pemulihan yang lengkap untuk perusahaan peringkat kecil, sederhana dan perusahaan. Hanya pengguna yang menjalankan Server2022 dan lebih tinggi boleh menggunakan ciri ini. Dalam artikel ini, kami akan menerangkan cara memasang, menyahpasang atau menetapkan semula WindowsServerBackup. Cara Menetapkan Semula Sandaran Pelayan Windows Jika anda mengalami masalah dengan sandaran pelayan anda, sandaran mengambil masa terlalu lama, atau anda tidak dapat mengakses fail yang disimpan, maka anda boleh mempertimbangkan untuk menetapkan semula tetapan sandaran Pelayan Windows anda. Untuk menetapkan semula Windows

Bagaimana untuk menyelesaikan ralat 5120 dalam SQL Bagaimana untuk menyelesaikan ralat 5120 dalam SQL Mar 06, 2024 pm 04:33 PM

Penyelesaian: 1. Semak sama ada pengguna log masuk mempunyai kebenaran yang mencukupi untuk mengakses atau mengendalikan pangkalan data, dan pastikan pengguna mempunyai kebenaran yang betul 2. Semak sama ada akaun perkhidmatan SQL Server mempunyai kebenaran untuk mengakses fail yang ditentukan atau folder, dan pastikan akaun Mempunyai kebenaran yang mencukupi untuk membaca dan menulis fail atau folder 3. Semak sama ada fail pangkalan data yang ditentukan telah dibuka atau dikunci oleh proses lain, cuba tutup atau lepaskan fail, dan jalankan semula pertanyaan 4 . Cuba sebagai pentadbir Jalankan Studio Pengurusan seperti dsb.

Persaingan teknologi pangkalan data: Apakah perbezaan antara Oracle dan SQL? Persaingan teknologi pangkalan data: Apakah perbezaan antara Oracle dan SQL? Mar 09, 2024 am 08:30 AM

Persaingan teknologi pangkalan data: Apakah perbezaan antara Oracle dan SQL? Dalam bidang pangkalan data, Oracle dan SQL Server adalah dua sistem pengurusan pangkalan data hubungan yang sangat dihormati. Walaupun kedua-duanya tergolong dalam kategori pangkalan data hubungan, terdapat banyak perbezaan antara mereka. Dalam artikel ini, kami akan menyelidiki perbezaan antara Oracle dan SQL Server, serta ciri dan kelebihannya dalam aplikasi praktikal. Pertama sekali, terdapat perbezaan dalam sintaks antara Oracle dan SQL Server.

See all articles