create PROCEDURE allave
@al  decimal(18,2)   output 
as 
select
 @al=(SELECT
            AVG(col) 
        FROM(
            SELECT col = f1 UNION ALL
            SELECT col = f2 UNION ALL
            SELECT col = f3 UNION ALL
            SELECT col = f4 UNION ALL
            SELECT col = f5 UNION ALL
            SELECT col = f6 UNION ALL
            SELECT col = f7 UNION ALL
            SELECT col = f8 UNION ALL
            SELECT col = f9 UNION ALL
            SELECT col = f10 UNION ALL
            SELECT col = f11 UNION ALL
            SELECT col = f12 UNION ALL
            SELECT col = f13 UNION ALL
            SELECT col = f14 UNION ALL
            SELECT col = f15 UNION ALL
            SELECT col = f16 UNION ALL
            SELECT col = f17 UNION ALL
            SELECT col = f18 UNION ALL
            SELECT col = f19 UNION ALL
            SELECT col = f20
        )A
    )
FROM f 
return @al
现在想把输出结果al插入到一个新表中,怎么办呢?在执行exec allave @al output总是提示必须声明标量变量 "@al"。各位,怎么做啊~~帮帮忙吧

解决方案 »

  1.   

    create PROCEDURE allave
     AS
     SELECT
                 AVG(col) 
             FROM(
                 SELECT col = f1 UNION ALL
                 SELECT col = f2 UNION ALL
                 SELECT col = f3 UNION ALL
                 SELECT col = f4 UNION ALL
                 SELECT col = f5 UNION ALL
                 SELECT col = f6 UNION ALL
                 SELECT col = f7 UNION ALL
                 SELECT col = f8 UNION ALL
                 SELECT col = f9 UNION ALL
                 SELECT col = f10 UNION ALL
                 SELECT col = f11 UNION ALL
                 SELECT col = f12 UNION ALL
                 SELECT col = f13 UNION ALL
                 SELECT col = f14 UNION ALL
                 SELECT col = f15 UNION ALL
                 SELECT col = f16 UNION ALL
                 SELECT col = f17 UNION ALL
                 SELECT col = f18 UNION ALL
                 SELECT col = f19 UNION ALL
                 SELECT col = f20
                 
           go
                 
       CREATE TABLE test (col VARCHAR(20))
       INSERT INTO test 
       EXEC allave
      

  2.   

    不是很清楚你那个参数存在是为啥,下面create table 那段是要分开执行的
      

  3.   

    declare @al decimal(18,2)
    exec allave @al output
    insert into tablename(VVV)
    select @al