Search code examples
sqlsql-serverscalaslick

How to get result from last SQL statement in Slick


I have the following Scala code:

db.run(sql"""
  DECLARE @Ids TABLE (ID INT NOT NULL, UNIQUE CLUSTERED (ID));
  INSERT INTO @Ids VALUES ...;
  SELECT A.* FROM SomeTable AS A
  INNER JOIN @Ids AS B ON A.ID = B.ID
""".as[Dto])

In this case Slick (3.2.1) returns result of INSERT (number of affected rows).

How can I get data from SELECT?


Solution

  • It looks like Slick can't do that, however the other way is to disable output of sql updates:

    db.run(sql"""
      SET NOCOUNT ON;
      DECLARE @Ids TABLE (ID INT NOT NULL, UNIQUE CLUSTERED (ID));
      INSERT INTO @Ids VALUES ...;
      SELECT A.* FROM SomeTable AS A
      INNER JOIN @Ids AS B ON A.ID = B.ID
      SET NOCOUNT OFF;
    """.as[Dto])