1

こんにちは、私はストアド プロシージャを作成していますが、後で一時データベースに変数を書き込む必要があるため、印刷でコードを出力する際に​​問題が発生しています。これはコードです:

SELECT 
    fmsTotalAmount + fmsAirTotalAmount + fmsProjectsTotalAmount TotalAmount, 
    fmsRelationAmount + fmsAirRelationAmount + fmsProjectsRelationAmount TotalRelationAmount
    FROM (

        SELECT 
            SUM(
                CASE WHEN fms1.currency != 'EUR' 
                    THEN fms1.Amount * fms1.Rate
                    ELSE ISNULL(fms1.Amount, 0) END) fmsTotalAmount,
            SUM(
                CASE WHEN fms1.relationcode = 'SHIP02' 
                    THEN 
                        CASE WHEN fms1.currency != 'EUR' 
                            THEN fms1.Amount * fms1.Rate
                            ELSE ISNULL(fms1.Amount, 0) END
                    ELSE 0 END) fmsRelationAmount,
            SUM(
                CASE WHEN fmsAir1.currency != 'EUR' 
                    THEN fmsAir1.Amount * fmsAir1.Rate
                    ELSE ISNULL(fmsAir1.Amount, 0) END) fmsAirTotalAmount,
            SUM(
                CASE WHEN fmsProjects1.relationcode = 'SHIP02' 
                    THEN 
                        CASE WHEN fmsProjects1.currency != 'EUR' 
                            THEN fmsProjects1.Amount * fmsAir1.Rate
                            ELSE ISNULL(fmsProjects1.Amount, 0) END
                    ELSE 0 END) fmsAirRelationAmount,
            SUM(
                CASE WHEN fmsProjects1.currency != 'EUR' 
                    THEN fmsProjects1.Amount * fmsAir1.Rate
                    ELSE ISNULL(fmsProjects1.Amount, 0) END) fmsProjectsTotalAmount,
            SUM(
                CASE WHEN fmsProjects1.relationcode = 'SHIP02' 
                    THEN 
                        CASE WHEN fmsProjects1.currency != 'EUR' 
                            THEN fmsProjects1.Amount * fmsProjects1.Rate
                            ELSE ISNULL(fmsProjects1.Amount, 0) END
                    ELSE 0 END) fmsProjectsRelationAmount
        FROM   [fms].[dbo].[file] f
        LEFT JOIN [fms].[dbo].[outgoinginvoiceline] fms1 ON 
            fms1.filenumber = CONVERT(NVARCHAR, f.filenumber)
        LEFT JOIN [fmsAir].[dbo].[outgoinginvoiceline] fmsAir1 ON 
            fmsAir1.filenumber = CONVERT(NVARCHAR, f.filenumber)
        LEFT JOIN [fmsProjects].[dbo].[outgoinginvoiceline] fmsProjects1 ON 
            fmsProjects1.filenumber = CONVERT(NVARCHAR, f.filenumber)


) a

今、この SELECT ステートメントの出力を印刷したいと思います。しかし、私がこれを行うとき:

print '合計請求金額: ' + CONVERT(nvarchar, fmsTotalAmount) + 'このリレーションの€' print '合計請求金額: ' + CONVERT(nvarchar, fmsTotalRelationAmount) + '€ in total'

しかし、次のエラーが表示されます。

このコンテキストでは、「fmsTotalAmount」という名前は許可されていません。有効な式は、定数、定数式、および (一部のコンテキストでは) 変数です。列名は許可されていません。

このコンテキストでは、「fmsTotalRelationAmount」という名前は許可されていません。有効な式は、定数、定数式、および (一部のコンテキストでは) 変数です。列名は許可されていません。

プリントについて。これから変数に値を取得するにはどうすればよいですか? 行として返す代わりに。変数が必要です。

4

2 に答える 2

2

私がこれを正しく理解していれば、あなたは a の結果をSELECTテーブルに格納したいと考えています。

INSERTこれを実現するには、最初に値を変数に書き込んでから、2 番目のステップでステートメントを使用してこれらの変数をテーブルに挿入しようとします。

次の構文を試してみたほうがよいでしょう。

SELECT col1, col2, ... INTO #SomeTable FROM SomeWhere

INTO #SomeTableフィッティング構造を持つ一時テーブルが自動的に作成され、完全な結果がこの新しく作成された一時テーブルに挿入されます。

シンプルSELECT * FROM #SomeTableは結果を返します。

于 2016-10-28T08:38:30.070 に答える
0

最初に printvariable を宣言して、その値を出力してみてください。

declare @ptext varchar(max)
select @ptext = 'Total money invoiced: ' + CONVERT(nvarchar, fmsTotalAmount) + '€ for this Relation' 
print @ptext
select @ptext = 'Total money invoiced: ' + CONVERT(nvarchar, fmsTotalRelationAmount) + '€ in total'
print @ptext
于 2016-10-28T08:30:15.250 に答える