数据集使用存储过程临时表无法使用列名

使用的时SQL SERVER

存储过程

CREATE  procedure [dbo].[监控] 

@start_date datetime, @end_date datetime,  @deptcode varchar(10),    

@line varchar(10),@busno varchar(10),    

@name varchar(10),@servno varchar(10)    as 

declare @month_value VARCHAR(6); 

SET @month_value=CONVERT(VARCHAR(6),@start_date,112); 

 DECLARE @StrWhere NVARCHAR(4000) 

SET @StrWhere=' ' 

 exec (' 

select 1 工号 ,2 工号2 into #temp 

 select 工号 from #temp 

 ') go

数据集:

image.png

错误页面

1634286826(1).png

直接SQL SERVER 里面运行存储过程时正常的

如果将存储过程中的

select 工号 from #temp

改成

select * from #temp

这样报表就能正常,请问各位高手这时什么回事啊?

FineReport 用户G2281009 发布于 2021-10-15 16:36 (编辑于 2021-10-15 16:53)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共1回答
最佳回答
0
Z4u3z1Lv6专家互助
发布于2021-10-15 16:37(编辑于 2021-10-15 17:26)

image.png

image.png

没注意看,你把建临时表的SQL贴出来看看

image.png

这两个存储过程名都不一样;

还有你这儿只赋值了一个变量strwhere,然而后面并没有exec(@strwhere),应该是先建一个临时表

IF OBJECT_ID('TEMPDB..#temp') IS NOT NULL

DROP TABLE  #temp

CREATE TABLE #temp(

[工号][NVARCHAR](100) NULL,

[工号2] [NVARCHAR](10) NULL

); 

在写入数据:

image.png

  • 用户G2281009 用户G2281009(提问者) 我改过来了,并且加上set nocount on情况也时一样 exec (\' select 1 工号 ,2 工号2 into #temp select 工号 from #temp \')
    2021-10-15 16:46 
  • Z4u3z1 Z4u3z1 回复 用户G2281009(提问者) 刚补充了
    2021-10-15 16:53 
  • 用户G2281009 用户G2281009(提问者) 回复 Z4u3z1 CREATE procedure [dbo].[监控] @start_date datetime, @end_date datetime, @deptcode varchar(10), @line varchar(10),@busno varchar(10), @name varchar(10),@servno varchar(10) as set nocount on declare @month_value VARCHAR(6); SET @month_value=CONVERT(VARCHAR(6),@start_date,112); DECLARE @StrWhere NVARCHAR(4000) SET @StrWhere=\' \' exec (\' IF OBJECT_ID(\'\'TEMPDB..#temp\'\') IS NOT NULL DROP TABLE #temp CREATE TABLE #temp( [工号][NVARCHAR](100) NULL, [工号2] [NVARCHAR](10) NULL ); insert into #temp select 1 ,2 select 工号 from #temp \') go 改成这样,提示 错误代码:1301 数据集配置错误
    Query:
    列名或所提供值的数目与表定义不匹配。
    2021-10-15 17:03 
  • Z4u3z1 Z4u3z1 回复 用户G2281009(提问者) 看最新的两张图
    2021-10-15 17:27 
  • 用户G2281009 用户G2281009(提问者) 已经解决了,谢谢 将 IF OBJECT_ID(\'TEMPDB..#temp\') IS NOT NULL DROP TABLE #temp 搬到数据集写就可以了 数据集: IF OBJECT_ID(\'TEMPDB..#temp\') IS NOT NULL DROP TABLE #temp set nocount on exec 监控 \'${开始日期}\',\'${结束日期}\',\'${部门}\',\'${线路}\',\'${车号}\',\'${姓名}\',\'${工号}\'
    2021-10-15 17:27 
  • 2关注人数
  • 245浏览人数
  • 最后回答于:2021-10-15 17:26
    请选择关闭问题的原因
    确定 取消
    返回顶部