帮我看看这里的存储过程里面的参数该怎么传递!谢谢了!

努力偷懒 努力偷懒 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
CREATE PROCEDURE Get_TC_SUM
@TimeTerm nchar(100)=''
AS
declare @strSQL nchar(4000)

set @strSQL='
select employee.EM_NO,employee.name,job.job_name,
isnull(CC.TC_SUM_SV,0) as TC_SUM_SV,isnull(CC.DO_SUM_SV,0) as DO_SUM_SV,
isnull(CC.TC_SUM_DG,0) as TC_SUM_DG,isnull(CC.DO_SUM_DG,0) as DO_SUM_DG,
isnull(TC_JS,0) as TC_JS,
TC_SUM=isnull((TC_SUM_SV+TC_SUM_DG+TC_JS),0) from
(select AA.*, BB.JS_money as TC_JS from (
select EM_ID,
TC_SUM_SV=sum(case when unit=''分钟'' or unit=''次'' then TC_Money else 0 end),
DO_SUM_SV=sum(case when unit=''分钟'' or unit=''次'' then DO_Money else 0 end),
TC_SUM_DG=sum(case when unit<>''分钟'' and unit<>''次'' then TC_Money else 0 end),
DO_SUM_DG=sum(case when unit<>''分钟'' and unit<>''次'' then DO_Money else 0 end)
from TC_Do_All
where @timeterm --这里一个
group by EM_ID) as AA
left outer join (
select JS_EM_ID,JS_Money=sum(JS_Money)
from dan
where @timeterm --这里一个
group by JS_EM_ID) as BB
on AA.EM_ID=BB.JS_EM_ID) as CC right outer join employee on employee.EM_ID=CC.EM_ID left outer join job on employee.job_id=job.job_id order by employee.EM_NO '
--print @strSQL
if @strSQL != ''
exec sp_executesql @strSQL
,N'
@TimeTerm nchar(100)'
,@TimeTerm


我是这样传递@timeterm参数的:
Get_TC_SUM @TimeTerm=' DATEDIFF(dd, pay_T,''2005-9-8'' )=0 '
提示如下的错误:
服务器: 消息 156,级别 15,状态 1,行 16
在关键字 'group' 附近有语法错误。
服务器: 消息 156,级别 15,状态 1,行 21
在关键字 'group' 附近有语法错误。

按道理,它难道不会得出下面的搜索语句的吗?:
select employee.EM_NO,employee.name,job.job_name,
isnull(CC.TC_SUM_SV,0) as TC_SUM_SV,isnull(CC.DO_SUM_SV,0) as DO_SUM_SV,
isnull(CC.TC_SUM_DG,0) as TC_SUM_DG,isnull(CC.DO_SUM_DG,0) as DO_SUM_DG,
isnull(TC_JS,0) as TC_JS,
TC_SUM=isnull((TC_SUM_SV+TC_SUM_DG+TC_JS),0) from
(select AA.*, BB.JS_money as TC_JS from (
select EM_ID,
TC_SUM_SV=sum(case when unit='分钟' or unit='次' then TC_Money else 0 end),
DO_SUM_SV=sum(case when unit='分钟' or unit='次' then DO_Money else 0 end),
TC_SUM_DG=sum(case when unit<>'分钟' and unit<>'次' then TC_Money else 0 end),
DO_SUM_DG=sum(case when unit<>'分钟' and unit<>'次' then DO_Money else 0 end)
from TC_Do_All
where DATEDIFF(dd, pay_T,'2005-9-8')=0
group by EM_ID) as AA
left outer join (
select JS_EM_ID,JS_Money=sum(JS_Money)
from dan
where DATEDIFF(dd, pay_T,'2005-9-8')=0
group by JS_EM_ID) as BB
on AA.EM_ID=BB.JS_EM_ID) as CC right outer join employee on employee.EM_ID=CC.EM_ID left outer join job on employee.job_id=job.job_id order by employee.EM_NO
...全文

相关推荐

oracle 存储过程详细介绍(创建,删除存储过程,参数传递等)

- 参数部分定义了存储过程的输入、输出或输入输出参数。`IN`参数仅用于传递数据,`OUT`参数用于传出结果,而`IN OUT`参数既能传入也能传出数据。

weixin_38653878

Sql Server 存储过程调用存储过程接收输出参数返回值

总的来说,SQL Server中的存储过程调用可以通过输出参数和返回值来传递数据。输出参数可以在存储过程中设置并由调用者接收,而返回值则可以直接作为存储过程执行的结果。

weixin_38674415

SQL实现递归及存储过程中In()参数传递解决方案详解

"SQL实现递归及存储过程中In()参数传递解决方案详解"SQL递归是一种常用的算法,用于解决树形结构的数据处理问题。在SQL Server中,我们可以利用表表达式来实现递归算法,例如在组织机构表

weixin_38628175

将逗号分隔的参数传递给存储过程

在标题“将逗号分隔的参数传递给存储过程”中,这个问题聚焦于如何有效地将一个包含多个整数的字符串(以逗号分隔)传递给存储过程。

weixin_38651540

SQL Server存储过程中使用表值作为输入参数示例

然而,SQL Server 2008引入了一种新的特性——表值参数,它极大地简化了这一过程。表值参数是一种特殊类型的参数,允许我们将一组行数据作为一个单一的参数传递给存储过程或函数。

weixin_38717870
评论 3
收藏 已收藏
分享
返回顶部
努力偷懒
MS-SQL Server 34,876 成员 254,635 内容