2016-11-30 10 views
0

CrystalレポートからSSRS(Sql Server Reporting Services)にレポートを変換する状況にあります。SSRS:同じ名前の列を返すストアドプロシージャを使用したレポートサービス

元のレポートは、同じ正確な名前の列を返したストアドプロシージャの結果を示しました。

これはどのように可能ですか?私はあなたを説明します:

前のプログラマーは恐ろしいハックをしました。選択結果を#TempTableに入れます。

のは#TempTableが

SELECT a,b,c INTO #TempTable FROM mytable 

を行い詰め込むために選択がその後、ストアドプロシージャの最後に、これが返されているものであると仮定しよう:

SELECT aliasTemp.*, a, b, c from #TempTable aliasTemp 

返された結果が

です

これはSQLの点では厄介ですが、私はできません。c、c、a、b、c私の顧客が実稼働環境に変更を加えることは望まないので、データベースをハンゲイズしてください。

私はこれを取得レポートのデータソースとして、このストアドプロシージャを追加しよう:

Error

サービスを報告しながらすると、そのフィールドを取得しようと言う自明のエラーですストアドプロシージャが返されます。重複した名前の列が見つかると機能しません。検索された余分な列を回避するSQL SELECTなど

サービスを報告すると、あなたは、SQLクエリまたはストアドプロシージャの両方を使用することができますので、私が取り払わは解決策になる可能性報告書に直接このクエリを実行することになる

CREATE TABLE #tmpBus 
(
    a INT, 
    b INT, 
    c INT 
) 

INSERT INTO #tempTable 
Exec StupidStoredProcedure'Params' 

同じ名前を持ち、最初の3つだけを抽出します。

しかし、抽出された列は一時表と一致しません。

これをどのように達成できますか?

+0

を助けようとした人へ

感謝。変換が完了したら古いものを取り除く。何か不足していますか?これを難しくする必要はなく、既に存在するハックを追加することもできます。修理する! –

+0

顧客がデータベース/サーバサイドコードの変更を拒否したため、私は変更を行うことができません。そうしないと、ストアドプロシージャが修正されてしまいます。 –

答えて

0

解決策を自分で見つけました。私はちょうどテンポラリテーブルのフィールドの名前を変更しました。ここで

がStupidStoredProcedureが同じ名前でこれらの列を抽出することを想定し、コードです(SIGH:S)

IF OBJECT_ID('tempdb.dbo.#ARandomTempTable', 'U') IS NOT NULL 
    DROP TABLE #ARandomTempTable 

CREATE TABLE #ARandomTempTable (
    a NVARCHAR(255), 
    b NVARCHAR(255), 
    c NVARCHAR(255), 
    a2 NVARCHAR(255), 
    b2 NVARCHAR(255), 
    c2 NVARCHAR(255) 
) 

INSERT INTO #ARandomTempTable 
EXEC StupidStoredProcedure @StupidParam = "Hello" 

SELECT 
    a, 
    b, 
    c, 
    a2, 
    b2, 
    c2 
FROM #ARandomTempTable 

私は完全だ。この方法で、C、B、C、A、B、ストアドプロシージャの出力については無関係で、私の意志で名前を付けて結果のパラメータを処理できます。あなたはそれが必要のように動作し、新しいもの(コピー)を作成し、既存のストアドプロシージャを変更できない場合

0

あなたの一時テーブルには6列が必要です。 execをinsertで使用するときは、テーブルのdefが一致する必要があります:カラムの数、データ型、およびnull許容量と思われます。

+0

別の方法で修正しました。私は解決策を投稿します。 –

+0

あなたのやり方はまさに私が提案していたものです。夜遅く投稿したように見えますが、フィールド名がテンポラリテーブルとマッチする必要はないと言っていた私の最終的な文章は忘れました:-) – SMM

+0

ああ、私は理解していませんでした:P ...誰かがこれを見つけるとすぐに解決するかもしれないコード –

関連する問題