0

私がしたいのは、最新のトランザクションのコピーであるが、いくつかの値を変更する新しいトランザクションを挿入することです。

呼び出されたリクエストIDを指定して最新のトランザクションを返すSPがありますsp_Get_YellowCard_Request_Last_Transaction

上記の を使用したい別の SP がありますsp_Update_CC_Move_YCR_TO

しかしsp_Get_YellowCard_Request_Last_Transaction、多くのフィールド (26) が返されるので、すべてを指定したくはありません。その結果を一時テーブルに挿入し、後でフィールドを変更して、一時テーブルを宛先トランザクション テーブルに挿入します。

これまでのところ、私が書いたものは次のとおりです。

USE [YellowCard_NewDesign]
GO
/****** Object:  StoredProcedure [dbo].[sp_Update_CC_Move_YCR_TO]    Script Date: 02/26/2013 09:43:26 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[sp_Update_CC_Move_YCR_TO]
    @YellowCard_Request_ID int,
    @yc_changer_username nvarchar(MAX),
    @yc_changer_rolename nvarchar(MAX),
    @yc_new_status nvarchar(MAX)
AS
    INSERT INTO #last_transaction
    EXEC dbo.sp_Get_YellowCard_Request_Last_Transaction @YellowCard_Request_ID*

#last_transaction が定義されていないというエラーが表示されます。

一時テーブル フィールドを定義せずに SP を完成させるにはどうすればよいですか?

4

1 に答える 1

0

SQL Server 2000 では、次のトリックを使用しました。

IF OBJECT_ID('tempdb..#last_transaction') IS NULL
    CREATE TABLE #last_transaction(
        ....
    )

INSERT INTO #last_transaction
    EXEC ...

それ以降のバージョンの SQL Server では、テーブル値関数を使用したいと思います。

于 2013-02-27T10:41:37.833 に答える