动态存储过程按列标题排序

时间:2015-07-11 20:24:06

标签: sql-server stored-procedures dynamic sql-order-by

我想按列标题对一个动态存储过程的结果进行排序。

例如,我的存储过程返回此表:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

现在,我想创建一个存储过程来执行该动态存储过程,但这一次得到按列标题排序的结果,如下所示:

String path = Environment.getExternalStorageDirectory()+ "/DCIM/Camera/1.jpg";

File imgFile = new File(path);
if(imgFile.exists())
{
   Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
   ImageView imageView=(ImageView)findViewById(R.id.imageView);
  imageView.setImageBitmap(myBitmap);
}else{
   System.out.println("Image does not exist");
}

我创立了这个问题的答案,但我不确定我的方式是正确还是简单的方法!

我可以轻松地实现这个问题吗?

修改

我的答案不适用于╔══════╦════════╦════╦══════╦═════════════╦═════════════╦════════╗ ║ name ║ family ║ id ║ type ║ description ║ create_date ║ row_no ║ ╚══════╩════════╩════╩══════╩═════════════╩═════════════╩════════╝ 数据类型的列!因为╔═════════════╦═════════════╦════════╦════╦══════╦════════╦══════╗ ║ create_date ║ description ║ family ║ id ║ name ║ row_no ║ type ║ ╚═════════════╩═════════════╩════════╩════╩══════╩════════╩══════╝ 不支持。

2 个答案:

答案 0 :(得分:2)

这是我的例子,希望这有帮助:

CREATE TABLE [dbo].[Test](
    [text1] [nvarchar](500) NULL,
    [text4] [nvarchar](500) NULL,
    [text3] [nchar](10) NULL
) ON [PRIMARY]

GO
create proc sp_TableOrderBy 
@tableName varchar(100)
as
declare @sql nvarchar(max)
declare @tableColOrderBy nvarchar(max)
SELECT @tableColOrderBy = COALESCE(@tableColOrderBy + ', ', '') + Name
FROM sys.columns
WHERE object_id = OBJECT_ID(@tableName)
order by name
set @sql = 'select ' + @tableColOrderBy + ' from ' + @tableName
execute sp_executesql @sql

exec sp_TableOrderBy 'Test'

答案 1 :(得分:0)

我创建了一个SP来执行以下步骤进行排序:

  • 1)将动态SP结果插入XML

  • 2)在OPENQUERY表中查找我的查询结果列,因为我的SP结果现在存储在临时表中。

  • 3)对已创建的列标题进行排序,并按此模式在字符串中插入:

      

    [col1],[col2],[col3],...

  • 4)创建一个T-SQL这个模型:

      

    'SELECT'+'排序列:[col1],[col2],[col3],...'+'FROM'+'#temptable'

  • 5)执行创建的T-SQL以显示已排序的SP结果。

在测试项目中,我的动态SP名称为:#TempTable。 现在Sorter SP代码是:

tempdb.sys.[columns]