zoukankan      html  css  js  c++  java
  • 获取Table的创建语句

    -------------------------sql脚本---------------------------

    SELECT (CASE WHEN a.colorder=1 THEN d.name ELSE '''' END) N'表名', a.colorder N'字段序号', a.name N'字段名',
    (CASE WHEN COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 THEN '√'ELSE '' END) N'标识',
    (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) N'主键', b.name N'类型', a.length N'占用字节数',
    COLUMNPROPERTY(a.id,a.name,'PRECISION') AS N'长度', ISNULL(COLUMNPROPERTY(a.id,a.name,'Scale'),0) AS N'小数位数',
    (CASE WHEN a.isnullable=1 THEN '√'ELSE '' END) N'允许空', ISNULL(e.text,'') N'默认值',
    ISNULL(g.[value],'') AS N'字段说明' 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 sys.extended_properties g on a.id=g.major_id AND a.colid=g.minor_id
    WHERE d.name = 'Company' --要查询的表
    ORDER BY object_name(a.id), a.colorder

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

    //--------------------获取Table的创建语句(Delphi方法)---------------------------
    function TFrm_main.GetSQLString(TbName:string):string;
    var
      sl:TStringList;
      sqlstr,sqlstr2:string;
      colname,coltype,collen,rhtpotlen,isnull,isidentify,IsFlag:string;
    begin
      sqlstr2:='SELECT (CASE WHEN a.colorder=1 THEN d.name ELSE '''' END) N''表名'', a.colorder N''字段序号'', a.name N''字段名'', '
                  +'(CASE WHEN COLUMNPROPERTY( a.id,a.name,''IsIdentity'')=1 THEN ''√''ELSE '''' END) N''标识'', '
                  +'(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) N''主键'', b.name N''类型'', a.length N''占用字节数'','
                  +'COLUMNPROPERTY(a.id,a.name,''PRECISION'') AS N''长度'', ISNULL(COLUMNPROPERTY(a.id,a.name,''Scale''),0) AS N''小数位数'', '
                  +'(CASE WHEN a.isnullable=1 THEN ''√''ELSE '''' END) N''允许空'', ISNULL(e.text,'''') N''默认值'','
                  +'ISNULL(g.[value],'''') AS N''字段说明'' 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 sys.extended_properties g on a.id=g.major_id AND a.colid=g.minor_id '
                  +'WHERE d.name = '''+TbName+''''// --要查询的表
                  +'ORDER BY object_name(a.id), a.colorder  ';
      with qrytable do
      begin
        Close;
        SQl.Text:=sqlstr2;
        Open;
        sqlstr:='Create Table '+TbName+'(';
        while not Eof do
        begin
          if sqlstr<>'Create Table '+TbName+'(' then sqlstr:=sqlstr+',';

          colname:=FieldByName('字段名').AsString;
          coltype:=FieldByName('类型').AsString;
          collen:=FieldByName('长度').AsString;
          rhtpotlen:=FieldByName('小数位数').AsString;
          isnull:=FieldByName('允许空').AsString;
          isidentify:=FieldByName('主键').AsString;
          IsFlag:=FieldByName('标识').AsString;
          sqlstr:=sqlstr+colname+' '+coltype;
          coltype:=LowerCase(coltype);                //数据类型
          if coltype='decimal' then
            sqlstr:=sqlstr+'('+collen+','+rhtpotlen+')';
          if (coltype='binary') or (coltype='varbinary') or (coltype='float') or (coltype='char')
             or (coltype='nchar') or (coltype='varchar') or (coltype='nvarchar') then
          begin
            sqlstr:=sqlstr+'('+collen+')';
          end;
          if isnull='' then  sqlstr:=sqlstr+' not null';
          if isidentify<>'' then sqlstr:=sqlstr+' Primary Key';
          if IsFlag<>'' then sqlstr:=sqlstr+' identity(1,1)';

          Next;
        end;
        sqlstr:=sqlstr+')';
      end;
      Result:=sqlstr;
    end;

  • 相关阅读:
    程序运行bug查看
    c# webbrowser 的html调用js出错
    c# dll使用注意
    支持ie的时间控件 html
    sql 条件插入
    软件自动更新原理
    c# 数组不能直接=,需要clone
    打包成exe程序
    逆袭大学
    Heritage from father
  • 原文地址:https://www.cnblogs.com/760044827qq/p/3833992.html
Copyright © 2011-2022 走看看