Sql server 如何使用ODBC/SQL Server在1中执行/打开多个SQL语句

Sql server 如何使用ODBC/SQL Server在1中执行/打开多个SQL语句,sql-server,delphi,odbc,Sql Server,Delphi,Odbc,我基本上想做的是一次触发多个SQL语句。 只要它们不返回结果,这就可以正常工作 我要做的是创建一个临时表来填充它,并在现有数据上加入它: CREATE TABLE #JaarMaandTable(jaarm int,maandm int) INSERT INTO #JaarMaandTable (jaarm,maandm) VALUES (2013,9), (2013,10), (2013,11) SELECT jaarm,maandm, kr.* FROM #JaarMaandTable

我基本上想做的是一次触发多个SQL语句。 只要它们不返回结果,这就可以正常工作

我要做的是创建一个临时表来填充它,并在现有数据上加入它:

CREATE TABLE #JaarMaandTable(jaarm int,maandm int)
INSERT INTO #JaarMaandTable (jaarm,maandm) VALUES (2013,9), (2013,10), (2013,11)

SELECT jaarm,maandm, kr.* 
FROM  #JaarMaandTable jm 
LEFT JOIN (
   SELECT  DATEPART(Month, datum) as maand, DATEPART(Year, datum) as jaar ,count(*) as regels mytable 
   FROM agenda 
   WHERE datum >= '20130901' 
   AND datum <= '20131130' 
   GROUP BY DATEPART(Year, datum), DATEPART(Month, datum)
)kr  ON jm.jaarm = kr.jaar AND jm.maandm = kr.maand ORDER BY jaarm, maandm
这是利用临时表将结果分为几个月,即使这些月没有数据

它在查询分析器中工作良好

当我尝试在这个查询上使用open时,它告诉我它不会返回游标。 当我执行SQL时,它不会返回结果。
当我将其拆分时,它会立即忘记诱惑。

您可以使用with语句编写查询,以避免需要临时表:

with JaarMaandTable(jaarm int,maandm int) as (
       select 2013, 9 union all
       select 2013, 10 union all
       select 2013, 11
      )
SELECT jaarm,maandm, kr.* 
FROM  JaarMaandTable jm 
LEFT JOIN (
   SELECT  DATEPART(Month, datum) as maand, DATEPART(Year, datum) as jaar ,count(*) as regels mytable 
   FROM agenda 
   WHERE datum >= '20130901' 
   AND datum <= '20131130' 
   GROUP BY DATEPART(Year, datum), DATEPART(Month, datum)
)kr  ON jm.jaarm = kr.jaar AND jm.maandm = kr.maand ORDER BY jaarm, maandm

您可以使用with语句编写查询,以避免需要临时表:

with JaarMaandTable(jaarm int,maandm int) as (
       select 2013, 9 union all
       select 2013, 10 union all
       select 2013, 11
      )
SELECT jaarm,maandm, kr.* 
FROM  JaarMaandTable jm 
LEFT JOIN (
   SELECT  DATEPART(Month, datum) as maand, DATEPART(Year, datum) as jaar ,count(*) as regels mytable 
   FROM agenda 
   WHERE datum >= '20130901' 
   AND datum <= '20131130' 
   GROUP BY DATEPART(Year, datum), DATEPART(Month, datum)
)kr  ON jm.jaarm = kr.jaar AND jm.maandm = kr.maand ORDER BY jaarm, maandm

您不需要创建临时表来执行所需的操作。一个查询语句可以解决您的问题吗?使用ADO和SQLOLEDB可以毫无问题地工作。请显示您的代码。通常,在执行不返回结果集ExecSQL或类似内容的查询时,您会使用不同的命令。问题是,对于OEQry.ExeSsql,它执行SQL很好,但没有返回结果集,而对于OEQry.Open,结果不是游标类型。将其拆分后,数据库就忘记了execsql en open之间的诱惑。您不需要创建一个临时表来执行您想要的操作。一个查询语句可以解决您的问题吗?使用ADO和SQLOLEDB可以毫无问题地工作。请显示您的代码。通常,在执行不返回结果集ExecSQL或类似内容的查询时,您会使用不同的命令。问题是,对于OEQry.ExeSsql,它执行SQL很好,但没有返回结果集,而对于OEQry.Open,结果不是游标类型。将其拆分,然后数据库忘记了execsql en open之间的诱惑。我必须将JaarmandTableJaarm int,maandm int更改为JaarmandTableJaarm,maandm,但对于其余部分,它就像一个符咒。我必须将JaarmandTableJaarm int,maandm int更改为JaarmandTableJaarm,maandm,但对于其余部分,它就像一个符咒。