【发布时间】:2009-12-28 02:41:45
【问题描述】:
当我们需要查询存储过程时,我们使用'Sp_Helptext procedurename'
可以为表格做类似的事情吗?
【问题讨论】:
-
@Biswo - 我几乎不得不猜测你的问题是什么,很难阅读。请确认我的解释正确。
标签: sql-server
当我们需要查询存储过程时,我们使用'Sp_Helptext procedurename'
可以为表格做类似的事情吗?
【问题讨论】:
标签: sql-server
在查询窗口中选择表名时使用 Alt+F1。
【讨论】:
很简单:
sp_help YourTable
【讨论】:
请使用followig查询
select * from information_Schema.columns where table_name = 'TableName'
【讨论】:
似乎没有直接等效的 sp_helptext 可用于表格。
在各种留言板上似乎很常见的两种方法是:
第二种方法有文章here
【讨论】:
试试这个 SP。它没有像主键和外键这样的表所需的所有符号,但它只是一个开始。
CREATE PROCEDURE [dbo].[GeneradorTablas]
@Tabla AS VARCHAR(100)
AS
BEGIN
DECLARE @Script AS VARCHAR(MAX) ='CREATE TABLE [dbo].[' + @Tabla + '](' + CHAR(13)
DECLARE @Columnas As TABLE(indice INT, Columna VARCHAR(1000))
INSERT INTO @Columnas
SELECT
ROW_NUMBER()OVER(ORDER BY C.column_id),
' [' + C.name + '] [' + TY.name + ']' +
CASE WHEN
TY.name='nvarchar' OR
TY.name='nchar' OR
TY.name='char' OR
TY.name='varbinary' OR
TY.name='varchar' OR
TY.name='text' THEN
'(' + CASE WHEN C.max_length>0 THEN CAST(C.max_length AS VARCHAR(10)) ELSE 'MAX' END + ')' ELSE ''
END +
CASE WHEN C.is_identity=1 THEN ' IDENTITY(1,1)' ELSE '' END +
' ' + CASE WHEN C.is_nullable=1 THEN 'NULL' ELSE 'NOT NULL' END + ','
FROM SYS.COLUMNS AS C
INNER JOIN SYS.TYPES AS TY ON C.system_type_id=TY.system_type_id
INNER JOIN SYS.TABLES AS T ON C.object_id=T.object_id
WHERE T.name=@Tabla
DECLARE @i AS INT
SELECT @i=MIN(indice) FROM @Columnas
WHILE @i IS NOT NULL
BEGIN
SELECT @Script+=Columna+CHAR(13) FROM @Columnas WHERE indice=@i
SELECT @i=MIN(indice) FROM @Columnas WHERE indice>@i
END
SET @Script=SUBSTRING(@Script,0,LEN(@Script)-1) + CHAR(13) + ')'
PRINT @Script
END
GO
【讨论】: