私はどのテーブルをクエリするのか定義するパラメータを持つストアドプロシージャを実行したい異なるテーブル(すべて同じ構造)を持つデータベースを持っています。SQLストアドプロシージャ - パラメータとしてテーブル
私はそれを把握するように見えることはできません。
CREATE SCHEMA test;
GO
まず、私は私が作成し、私はその後、テーブルタイプ
USE [TestDataFiles]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [test].[testing]
(
-- Add the parameters for the stored procedure here
@datetime datetime,
@t DataType READONLY
)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON
select top(10) *
from @t
where [datetime] > @datetime
END
GO
を作成した後、スキーマ
CREATE TYPE DataType as TABLE (
[datetime] [datetime] NULL,
[testVar] [bigint] NULL)
GO
を作成しましたストアドプロシージャ。
Exec test.testing @t = 'table.1', @datetime = '2017-01-01'
は、しかし、私は次のエラーを取得する、それを呼び出すとき:私はbegin
とselect
間手順の例を見てきました
Exec test.testing @t = [table.1], @datetime = '2017-01-01'
:
Msg 206, Level 16, State 2, Procedure test, Line 0 [Batch Start Line 0] Operand type clash: varchar is incompatible with DataType
同じで起こりますあなたは次のようなものを置く:
INSERT INTO table.1
(datetime, testVar)
しかし、table.1(またはテーブルのリストがあるのでtable2など)にはデータがあり、変更したくありません。
TYPEのようにダミーテーブルを作成するつもりがない限りは?
私がオンラインで見つけた例は役に立ちました。
あなたはテーブル名を渡してそのテーブルをクエリしたいと思うように思えます。これは動的SQLを必要とするでしょう、私はあなたが望むものと信じています。 –
私はこれの任意の例を見つけることができません、リンクや説明をいただければ幸いです。基本的には、異なるテーブル間でSQLストアドプロシージャを呼び出すRコードを記述しています。 n個のテーブルに同じSPを作成したくない – Olivia