sql >> データベース >  >> RDS >> Sqlserver

テーブルを選択または更新するには sp が必要です。そのためには、単一の変数に複数の値を入力する必要があります。

    テーブル変数を使用してデータをストアド プロシージャに渡すことを考えたことがありますか。例:

    セットアップ

    CREATE TYPE EmpIdValuesType AS TABLE
      (                     
            [EmpID] [int]NOT NULL
      )
    
    CREATE TABLE Employee
    (
      EmpID INT,
      Name varchar(20)
     )
    
    INSERT INTO Employee 
    Values
     (1, 'test1'),
     (2, 'test2'),
     (3, 'test3'),
     (4, 'test4'),
     (5, 'test5'),
     (6, 'test6'),
     (7, 'test7');
    
    Create Procedure usp_GetEmployees
    (
      @TableVariable EmpIdValuesType READONLY
    )
    AS
      SELECT *
      FROM Employee
      INNER JOIN @TableVAriable TV
        ON Employee.EmpId = TV.EmpId
    

    これで、EmpIdValuesType 型の一時テーブル変数に行を挿入し、その変数をストアド プロシージャに渡すことができます:

    ストアド プロシージャの呼び出し

    DECLARE @empIds AS EmpIdValuesType
    
    INSERT INTO @empIds(EmpID) Values (1), (2), (5)
    
    Exec usp_GetEmployees @empIds;
    

    結果は次のとおりです。

    SQLFiddle




    1. SQL-小数点以下の数字のみを取得するにはどうすればよいですか?

    2. PHPを使用してSQLデータベースに挿入するときにエラーが発生しました

    3. MySQLのパフォーマンスDELETEまたはUPDATE?

    4. SQL Serverで「datetimeoffset」を「smalldatetime」に変換します(T-SQLの例)