临时表 不存在。。。。

bert651153338 2013-07-09 04:22:14
ALTER PROCEDURE [dbo].[p_test]
@TableName nvarchar(50), --表名
@Top nvarchar(10), --数据行
@Fields nvarchar(4000) = '*', --字段名(全部字段为*)
@OrderField nvarchar(4000), --排序字段(必须!支持多字段)
@sqlWhere nvarchar(4000) = Null --条件语句(不用加where)
AS
BEGIN
Declare @sql nvarchar(4000);
Declare @sql2 nvarchar(4000);
Declare @Row nvarchar(20);

if (@Top<>'0')
set @Row = 'top ' + @Top

set @sql ='select top 1 ' + @Fields + ' into #temp1 from ' + @TableName + ' where '
set @sql2 = 'select ' + @Row + ' ' + @Fields + ' into #temp2 from ' + @TableName + ' where '
if (@SqlWhere<>'' or @sqlWhere<>NULL)
begin
set @sql = @sql + @sqlWhere + ' and'
set @sql2 = @sql2 + @sqlWhere + ' and'
end
set @sql = @sql + ' datalength(picpath) <> 0 '
set @sql2 = @sql2 + ' id not in(select id from #temp1) '

exec(@sql)
Exec(@sql2)

select * from #temp1 UNION ALL select * from #temp2
drop table #temp1
drop table #temp2
END





(1 行受影响)
消息 208,级别 16,状态 0,第 1 行
对象名 '#temp1' 无效。
消息 208,级别 16,状态 0,过程 p_test,第 29 行
对象名 '#temp1' 无效。

(1 行受影响)


求高手帮看看。。。。
...全文
200 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lzw_0736 2013-07-09
  • 打赏
  • 举报
回复
ALTER PROCEDURE [dbo].[p_test] @TableName nvarchar(50), --表名 @Top nvarchar(10), --数据行 @Fields nvarchar(4000) = '*', --字段名(全部字段为*) @OrderField nvarchar(4000), --排序字段(必须!支持多字段) @sqlWhere nvarchar(4000) = Null --条件语句(不用加where) AS BEGIN Declare @sql nvarchar(4000); Declare @sql2 nvarchar(4000); Declare @Row nvarchar(20); if (@Top<>'0') set @Row = 'top ' + @Top --代码变化部分开始 create table #temp1 (字段,字段,字段......) create table #temp2 (字段,字段,字段......) set @sql ='insert into #temp1 select top 1 ' + @Fields + ' from ' + @TableName + ' where ' set @sql2 = 'insert into #temp2 select ' + @Row + ' ' + @Fields + ' from ' + @TableName + ' where ' --代码变化部分结束 if (@SqlWhere<>'' or @sqlWhere<>NULL) begin set @sql = @sql + @sqlWhere + ' and' set @sql2 = @sql2 + @sqlWhere + ' and' end set @sql = @sql + ' datalength(picpath) <> 0 ' set @sql2 = @sql2 + ' id not in(select id from #temp1) ' exec(@sql) Exec(@sql2) select * from #temp1 UNION ALL select * from #temp2 drop table #temp1 drop table #temp2 END
bert651153338 2013-07-09
  • 打赏
  • 举报
回复
引用 4 楼 SmithLiu328 的回复:
变成全局表: set @sql ='select top 1 ' + @Fields + ' into ##temp1 from ' + @TableName + ' where ' set @sql2 = 'select ' + @Row + ' ' + @Fields + ' into ##temp2 from ' + @TableName + ' where '
搞定了。。。。。谢谢,,马上给分。。。。
KevinLiu 2013-07-09
  • 打赏
  • 举报
回复
变成全局表:
set @sql ='select top 1 ' + @Fields + ' into ##temp1 from ' + @TableName + ' where '
set @sql2 = 'select ' + @Row + ' ' + @Fields + ' into ##temp2 from ' + @TableName + ' where '
bert651153338 2013-07-09
  • 打赏
  • 举报
回复
引用 1 楼 shmilywcd 的回复:
不在同一个会话里, 你可以先创建好 临时表,在动态SQL里 插入数据
能贴一下代码吗? 很少写这东西。。
KevinLiu 2013-07-09
  • 打赏
  • 举报
回复
使用Globale TEMP TABLE ## 或者先创建TEMP TABLE然后再插入数据。
天-笑 2013-07-09
  • 打赏
  • 举报
回复
不在同一个会话里, 你可以先创建好 临时表,在动态SQL里 插入数据
源码下载地址: https://pan.quark.cn/s/a122da3d9935 在Qt开发框架中,`QComboBox`是一种基础组件,主要用于构建下拉选择界面。通常情况下,`QComboBox`仅支持单一选项的选择模式,然而通过适当的定制和扩展,我们能够开发出支持多重选择并具备删除操作的下拉框。本资源将系统阐述如何构建一个集成多选及删除选项的`QComboBox`。首先,需要对`QComboBox`的基本操作方法有所掌握。`QComboBox`内含一个可滑动显示的下拉列表,用户能够从中选取一个或多个条目。在Qt环境下,我们可以利用`addItem()`方法向列表中插入新条目,通过`currentText()`方法获取当前选中的文本内容,使用`clear()`方法清除所有已有条目,以及调用`showPopup()`方法来展示下拉列表。然而,若要实现多重选择功能,我们必须创建一个`QComboBox`的自定义子类,例如命名为`MultiSelectComboBox`。这个子类将继承自`QComboBox`并对其核心行为进行重写,以便支持多重选择。这一过程通常包含以下几个关键阶段:1. **数据模型**:`QComboBox`原生的数据模型是`QStringListModel`,但为了实现多重选择,我们需要采用一个能够存储多个选中条目的数据模型,例如`QStandardItemModel`。2. **信号与槽**:需要重写`QComboBox`的`activated(const QString &)`信号,当用户选中某个列表项时,不仅应标记其选中状态,还需记录这一状态。同时,应新增一个信号,比如`selectionChanged()`,用于在选中条目发生变化...

34,873

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧