create proc p_qry
@编号 varchar(8000),
@开始日期 datetime,
@结束日期 datetime
as
set nocount on  ---*********************** 加上这句
declare @s varchar(8000),@tj varchar(100)
select @s=''
,@tj=' where 销售日期 between '''
+convert(char(10),@开始日期,120)
+''' and '''
+convert(char(10),@结束日期,120)
+''''
select @s=@s+',['+名称+']=sum(case 柜台号 when '''+编号+''' then 金额 else 0 end)'
from 柜台表 where charindex(','+编号+',',','+@编号+',')>0
exec('
select 销售日期=convert(char(10),销售日期,120)'+@s+'
from 销售表 '+@tj+'
group by convert(char(10),销售日期,120)')
go--调用
exec p_qry 'aaa,bbb,ccc','2004-10-10','2004-10-11'
go

解决方案 »

  1.   

    存储过程不能被PB调用??? 没有可能吧? 你到PB版去问问如何调用存储过程
      

  2.   

    那另创建了一个存储过程,需要用到你的存储过程的结果集,
    也就是将你的存储过程的结果集放到表temp1中,有办法实现吗?
    用下面的会出错!create proc p_p1
    as
    insert into temp1
    exec p_qry 'aaa,bbb,ccc','2004-10-10','2004-10-11'
    select * from temp1服务器: 消息 208,级别 16,状态 1,过程 p_p1,行 3
    对象名 'temp1' 无效。
      

  3.   

    insert into temp1
    exec p_qry 'aaa,bbb,ccc','2004-10-10','2004-10-11'这个语法是没有错的,但你得先建好表.
      

  4.   

    如果你真的因为特殊原因不能用存储过程,那你直接在程序中拼SQL就行了,又何必写存储过程呢?
      

  5.   

    insert into temp1
    exec p_qry 'aaa,bbb,ccc','2004-10-10','2004-10-11'这个语法是没有错的,但你得先建好表.《----- 可能问题在这里,因为无法提前建好表的temp1的表结构,因为返回的字段不固定!