2017-07-21 1 views
0

Ich möchte create table script in Sybase Central generieren. Ich benutzte:
SELECT * FROM INFORMATION_SCHEMA.TABLES Es gibt Informationen im Tabellenformat und ich brauche diese Art von Format und Info nicht. Und ich möchte auch nicht ddlgen Befehl verwenden.Sybase: Wie kann ich Tabellendefinition mit Abfrage erhalten?

fand ich das gleiche Skript in SQL (beantwortet von @Shnugo):

How I can get table definition in SQL SERVER 2008 R2 using SQL query? ich all denen gesucht, aber jedes Skript wie diese nicht bekommen können. Ich möchte nicht dasselbe wie SQL in Sybase erstellen, wie ich es gerade mache.

Antwort

0

OK thanx bekam ich die Antwort: Es ist ein Verfahren, das alle Tabellen ddl in der Datenbank holen ist:

use sybsystemprocs 
go 

if object_id('dbo.sp_ddl_create_table') is not null 
    drop procedure sp_ddl_create_table 
    print "Dropping sp_ddl_create_table" 
go 

create proc sp_ddl_create_table 
as 

-- Creates the DDL for all the user tables in the 
-- current database 

select right('create table ' + so1.name + '(' + ' 
', 255 * (abs(sign(sc1.colid - 1) - 1)))+ 
     sc1.name + ' ' + 
     st1.name + ' ' + 
     substring('(' + rtrim(convert(char, sc1.length)) + ') ', 1, 
     patindex('%char', st1.name) * 10) + 
     substring('(' + rtrim(convert(char, sc1.prec)) + ', ' + rtrim(
     convert(char, sc1.scale)) + ') ' , 1, patindex('numeric', st1.name) * 10) + 
     substring('NOT NULL', (convert(int, convert(bit,(sc1.status & 8))) * 4) + 1, 
     8 * abs(convert(bit, (sc1.status & 0x80)) - 1)) + 
     right('identity ', 9 * convert(bit, (sc1.status & 0x80))) + 
     right(',', 5 * (convert(int,sc2.colid) - convert(int,sc1.colid))) + 
     right(') 
' + 'go' + ' 
' + ' 
', 255 * abs(sign((convert(int,sc2.colid) - convert(int,sc1.colid))) - 
1)) 
from sysobjects so1, 
     syscolumns sc1, 
     syscolumns sc2, 
     systypes st1 
where so1.type = 'U' 
and sc1.id = so1.id 
and st1.usertype = sc1.usertype 
and sc2.id = sc1.id 
and sc2.colid = (select max(colid) 
       from syscolumns 
       where id = sc1.id) 
order by so1.name, sc1.colid 
go 

if object_id('dbo.sp_ddl_create_table') is not null 
begin 
    grant execute on sp_ddl_create_table to public 
    print "Created sp_ddl_create_table" 
end 
else 
    print "Failed to create sp_ddl_create_table" 
go 

go