多个存储过程有相同的语句,可以定义后共用吗? 
用存储过程调用存储过程吗?如:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
goALTER PROCEDURE [dbo].[aaaaproc] 
a_info varchar(256)AS
BEGIN
DECLARE @Sql varchar(4000),
SET @Sql = 'select * from history' + '想调用存储过程bbbbproc'
exec (@sql)
select @sql
go---另一个存储过程
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
goALTER PROCEDURE [dbo].[bbbbproc] 
a_info varchar(256)AS
BEGIN
DECLARE @Sql varchar(4000),
SET @Sql = 'where aInfo = '+rtrim(a_info)
go要在存储过程aaaaproc中嵌入调用bbbbproc存储过程,而且bbbbproc这个存储过程并不是一个完成的sql语句。
这样可以实现吗?
具体要怎样写呢??最好写一个简单地例子,用这个例子就行

解决方案 »

  1.   

    bbbbproc存储过程.加一个输出参数.然后在aaaaproc中,
    declare @where varchar(255);
    exec bbbproc xx,@where output然后在aaaaproc中.使用这个@where
      

  2.   

    ALTER PROCEDURE [dbo].[bbbbproc] 
    @a_info varchar(256)
    @where varchar(4000)
    AS
    BEGIN
    DECLARE @Sql varchar(4000),
    SET @Sql = 'where aInfo = '+rtrim(a_info)set @where = @sql;
    go--------------------------------------------------
    --------------------------------------------------ALTER PROCEDURE [dbo].[aaaaproc] 
    a_info varchar(256)AS
    BEGIN
    DECLARE @Sql varchar(4000),
    SET @Sql = 'select * from history ' declare @where varchar(4000);
    exec bbbbproc 20,@where output;set @sql = @sql + @where;exec (@sql)
    select @sql
    go
      

  3.   

    @where varchar(4000)
    -->
    @where varchar(4000) OUTPUT-----
    漏了个output
      

  4.   

    因为这几个存储过程有6-7个部分所用数据库语句是相同的,但语句较为复杂,并不是只是在where或者from中。
    本人表达能力真是。。有限。。哎。
    (1)几个存储过程可以共用的sql语句(不完整的,一段一段的),这样的语句大概有6-7个。
    (2)而语句除了共用的sql语句外,其他部分语句还会有参数不同,判断条件不同的情况。
    因此不能放在一起写。
    可如果每写一个存储过程,都重新写那些共用的语句,又很耗费时间(因为在存储过程里面写有判断条件的sql语句比较容易出错,如括号对错的情况),而且错误率也会高。
      

  5.   

    这里面的这个
    exec bbbbproc 20,@where output;20是做什么的??
      

  6.   

    请教一下,如果嵌入的存储过程是远程服务器的,那怎么实现啊?
    也就是说在本地服务器的SQL存储过程里嵌入远程服务器SQL的存储过程,请问要怎么实现?谢谢!!!