IF EXISTS(SELECT * FROM sysobjects WHERE name='book1')
DROP TABLE book1

CREATE TABLE book1(
bID CHAR(10) PRIMARY KEY NOT NULL,
bName VARCHAR(20),
bPrice MONEY
)
INSERT INTO book1 VALUES('001','C语言入门',$30)
INSERT INTO book1 VALUES('002','POWERbUILDER报表开发',$52)
GOIF EXISTS(SELECT * FROM sysobjects WHERE name='query_book1' AND type='P')
DROP PROCEDURE query_book1
GOCREATE PROC query_book1
AS
SELECT * FROM book1 
GO
EXEC query_book1
IF OBJECT_ID('insert_book','p' ) IS NOT NULL
DROP PROC insert_book
GO
CREATE PROC insert_book
@param1 CHAR(10),
@param2 VARCHAR(20),
@param3 MONEY,
@param4 MONEY OUTPUT WITH ENCRYPTION
AS
INSERT book1(bID,bName,bPrice) VALUES(@param1,@param2,@param3)
SELECT @param4=SUM(bPrice) FROM book1
GODECLARE @total_price MONEY
EXEC insert_book '003','Delphi 控件开发指南',$100,@total_price
PRINT '总金额为'+CONVERT(VARCHAR,@total_price)
GO
请问一下第二个存储过程为什么不执行呀?
EXEC insert_book '003','Delphi 控件开发指南',$100,@total_price    ??

解决方案 »

  1.   

    DECLARE @total_price MONEY
    EXEC insert_book '003','Delphi 控件开发指南',$100,@total_price OUTPUT
    PRINT '总金额为'+CONVERT(VARCHAR,@total_price)
    GO
      

  2.   

    EXEC insert_book '003','Delphi 控件开发指南',$100,@total_price output
      

  3.   

    加OUTPUT 不行,还是一样没用
      

  4.   

    其实已经执行了,只是@total_price参数没带OUTPUT,PRINT出NULL而已。看看便知
    DECLARE @total_price MONEY
    EXEC insert_book '019','Delphi 控件开发指南',$100,@total_price 
    PRINT '总金额为'+ISNULL(CONVERT(VARCHAR,@total_price), '')
      

  5.   

    估计是楼主看错了,呵呵。
    IF EXISTS(SELECT * FROM sysobjects WHERE name='book1')
    DROP TABLE book1CREATE TABLE book1(
    bID CHAR(10) PRIMARY KEY NOT NULL,
    bName VARCHAR(20),
    bPrice MONEY
    )
    INSERT INTO book1 VALUES('001','C语言入门',$30)
    INSERT INTO book1 VALUES('002','POWERbUILDER报表开发',$52)
    GOIF EXISTS(SELECT * FROM sysobjects WHERE name='query_book1' AND type='P')
    DROP PROCEDURE query_book1
    GOCREATE PROC query_book1
    AS
    SELECT * FROM book1 
    GO
    --EXEC query_book1
    IF OBJECT_ID('insert_book','p' ) IS NOT NULL
    DROP PROC insert_book
    GO
    CREATE PROC insert_book
    @param1 CHAR(10),
    @param2 VARCHAR(20),
    @param3 MONEY,
    @param4 MONEY OUTPUT WITH ENCRYPTION
    AS
    INSERT book1(bID,bName,bPrice) VALUES(@param1,@param2,@param3)
    SELECT @param4=SUM(bPrice) FROM book1
    GODECLARE @total_price MONEY
    EXEC insert_book '004','Delphi 控件开发指南',$100,@total_price output
    PRINT '总金额为'+ISNULL(CONVERT(VARCHAR,@total_price), '^^')
    GO--RESULT
    EXEC query_book1
    /*
    bID bName bPrice
    001        C语言入门 30.00
    002        POWERbUILDER报表开发 52.00
    004        Delphi 控件开发指南 100.00
    */