SELECT a.column_id AS No, a.name AS ColumnName, ISNULL(g.value, '-') AS DsCrption
FROM  sys.columns AS a LEFT OUTER JOIN sys.extended_properties AS g ON a.object_id = g.major_id AND g.minor_id = a.column_id
WHERE (a.object_id =(SELECT object_id FROM sys.tables WHERE (name = 'Model')))SELECT  a.column_id AS No, a.name AS 列名, ISNULL(g.value, '-') AS 说明
FROM    sys.columns AS a LEFT OUTER JOIN sys.extended_properties AS g ON a.object_id = g.major_id AND g.minor_id = a.column_id
WHERE  (a.object_id =(SELECT  object_id  FROM  sys.tables WHERE  (name = 'Columns')))
------------------------------------------------
上边是 读取数据库 表字段 及字段备注的 SQL 语句 我想吧他 改成 存储过程
------------------------------------------------------------------------------Create Procedure Sp_GetTbDscrtion@TbName nvarchar(200) ---'Columns'asdeclare @strSQL nvarchar(1000)set @strSQL='SELECT a.column_id AS No, a.name AS ColumnName, ISNULL(g.value, "'-'") AS DsCrption 
FROM  sys.columns AS a LEFT OUTER JOIN sys.extended_properties AS g ON a.object_id = g.major_id 
AND g.minor_id = a.column_id WHERE (a.object_id =(SELECT object_id FROM sys.tables 
WHERE (name = "'+@TbName+'")))'
 或者 这样set @strSQL='SELECT a.column_id AS No, a.name AS ColumnName, ISNULL(g.value, '-') AS DsCrption 
FROM  sys.columns AS a LEFT OUTER JOIN sys.extended_properties AS g ON a.object_id = g.major_id 
AND g.minor_id = a.column_id WHERE (a.object_id =(SELECT object_id FROM sys.tables 
WHERE (name = '+@TbName+')))'execute(@strSQL)Go怎么都不可以 为什么 提示 操作数数据类型 varchar 对于 subtract 运算符无效。要写为 存储过程 该怎么改啊  谢谢

解决方案 »

  1.   

    字符拼接不正确 PRINT出来看看错误在哪里..
      

  2.   

    set @strSQL='SELECT a.column_id AS No, a.name AS ColumnName, ISNULL(g.value, ''-'') AS DsCrption 
    FROM  sys.columns AS a LEFT OUTER JOIN sys.extended_properties AS g ON a.object_id = g.major_id 
    AND g.minor_id = a.column_id WHERE (a.object_id =(SELECT object_id FROM sys.tables 
    WHERE (name = '''+@TbName+''')))'
      

  3.   

    set @strSQL='SELECT a.column_id AS No, a.name AS ColumnName, ISNULL(g.value, ''-'') AS DsCrption 
    FROM  sys.columns AS a LEFT OUTER JOIN sys.extended_properties AS g ON a.object_id = g.major_id 
    AND g.minor_id = a.column_id WHERE (a.object_id =(SELECT object_id FROM sys.tables 
    WHERE (name = "'+@TbName+'")))'
      

  4.   

    declare @strSQL nvarchar(1000)set @strSQL='SELECT a.column_id AS No, a.name AS ColumnName, ISNULL(g.value,'''-''') AS DsCrption 
    FROM  sys.columns AS a LEFT OUTER JOIN sys.extended_properties AS g ON a.object_id = g.major_id 
    AND g.minor_id = a.column_id WHERE (a.object_id =(SELECT object_id FROM sys.tables 
    WHERE (name = '''+@TbName+''')))'
      

  5.   

    ISNULL(g.value, ''-'')这里 一直忘了关注  汗WHERE (name = '''+@TbName+''')))'WHERE (name = "'+@TbName+'")))'