SQL Server中函数的列名

时间:2018-01-16 05:55:51

标签: sql-server function tsql

我想要表格的列名。

所以我试试这个

UICollectionViewCell

但是这并没有显示任何数据..这就是我尝试使用动态SQL的原因。

override func willRotate(to toInterfaceOrientation: UIInterfaceOrientation, duration: TimeInterval)
{
    if let indexPath = self.collectionView.indexPathsForSelectedItems?.first
    {
        let attributes: UICollectionViewLayoutAttributes? = collectionView.layoutAttributesForItem(at: indexPath)
        print("center: \((attributes?.center)!)")
    }
}

但是我收到了这个错误:

  

找不到任何一列" dbo"或用户定义的函数或聚合" dbo.fnproduct",或名称不明确。

帮我解决这个问题或建议我替代方法 和雅..我想在这里传递函数

5 个答案:

答案 0 :(得分:3)

尝试此查询:

SELECT c.name [ColumnName] 
FROM sys.columns C
INNER JOIN  sys.objects O ON C.Object_id = O.Object_Id
WHERE O.NAME = 'FunctionName'

答案 1 :(得分:1)

您可以从系统视图INFORMATION_SCHEMA.COLUMNS

获取表格的所有列列表

只需选择

SELECT
    *
    FROM INFORMATION_SCHEMA.COLUMNS
       WHERE TABLE_NAME = 'YouTableName'

注意:

如果您正在尝试从函数中获取列名列表(这是我在查看您的代码时的感受)这是不可能的,因为函数没有列名,除非它是表有价值的功能。在那种情况下使用此

SELECT *
FROM sys.columns
WHERE object_id=object_id('dbo.YourTVF')

答案 2 :(得分:1)

你不需要动态sql

select *
from   sys.columns
where  object_id = object_id('fnproduct')

如果您需要输入参数,请从sys.parameters

获取

答案 3 :(得分:1)

SELECT c.name, [type] = t.name, c.max_length, c.[precision], c.scale
  FROM sys.columns AS c
  INNER JOIN sys.types AS t
  ON c.system_type_id = t.system_type_id
  AND c.user_type_id = t.user_type_id
  WHERE c.[object_id] = OBJECT_ID('fnproduct')

答案 4 :(得分:0)

为什么不使用INFORMATION_SCHEMA.COLUMNS;

SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = N'SampleTable'

另外,我不知道fnproduct()返回什么,但你应该指定数据库和表名;

USE SampleDatabase
select * 
from sys.columns 
where object_id = OBJECT_ID('TableName')