当前位置: 首页 > 面试题库 >

简单的动态TSQL查询语法

齐文林
2023-03-14
问题内容

这可能是一个简单的答案,但是我盯着它看了太久了…

我有以下查询,该查询将存储过程输入参数作为变量名并计算该表中的记录。我想将动态语句(@toStartStr)的结果检索到变量(@toStart)中。

-- @tempTableName = SProc input parameter
DECLARE @toStartStr nvarchar(150);
DECLARE @toStart int;
SET @toStartStr = 'SELECT @toStart = COUNT(ID) FROM ' + @tempTableName;
EXEC(@toStartStr);

现在,出现错误提示@toStart无法与字符串SELECT串联,但这是我想要的要点。有人可以看到我在做什么吗?还是建议替代方案?FYI SQL 2008
R2。谢谢。


问题答案:

DECLARE @sql NVARCHAR(255);

DECLARE @toStart INT;

SET @sql = N'SELECT @toStart = COUNT(ID) FROM ' + QUOTENAME(@tempTableName);

EXEC sp_executesql @sql, N'@toStart INT OUTPUT', @toStart OUTPUT;

PRINT @toStart;

但是,如果您可以忽略当前的进行中的事务(并且您使用的是SQL Server 2005或更高版本,请在询问问题时指定版本),这是一种更轻松,更有效的方法。

DECLARE @toStart INT;

SELECT @toStart = SUM(rows) 
  FROM sys.partitions
  WHERE [object_id] = OBJECT_ID(@tempTableName)
  AND index_id IN (0,1);

PRINT @toStart;

仅出于完整性考虑,以下是SQL Server2000的解决方案,该解决方案也不需要任何特殊特权(只需connect和public成员):

DECLARE @toStart INT;

SELECT @toStart = [rows] 
  FROM sysindexes
  WHERE id = OBJECT_ID(@tempTableName)
  AND indid IN (0,1);

PRINT @toStart;

就是说,如果您使用计数来确定下一个ID可能是什么,或者类似的事情,我认为您正在以错误的方式进行处理,因为可以删除行,并且如果是标识列,则可以跳过值由于回滚。



 类似资料:
  • Sangria.parser.SyntaxError:解析GraphQL查询时出现语法错误。输入结尾意外,应为union、Comments、INTERNECT、SPALEAR、enum、type、inputType或directive(第1行第79列):“Query FetchPokemons{\n pokemonsWithHeight(Height:100){\n NAME\n}\n}” 但是在

  • 我在使用PIVOT SQL脚本时遇到了一个“小”问题。我目前的解决方案基于类似的问题 动态枢轴 . 我已经写好了PIVOT脚本,基本上没问题。然而,我的情况是这样的,脚本输出类似这样的内容,而不是将唯一的条目放在单行上 而我所寻找的结果应该是这样的 这是脚本 我将不胜感激一些可以帮助我解决这个问题的指示。我在这里做了一个小提琴,由于某种奇怪的原因,它没有输出任何东西,但生成架构的所有代码都在那里

  • 我试图从动态表中选择对象,但当我运行我的代码时,我得到了一些错误...有一种方法可以做到这一点...我用的是JPAHibernate和后遗症 这里是错误。。。 org.springframework.dao.InvalidDataAccessResourceUsageExc0019,"dedegMessage":"org.springframework.dao.InvalidDataAccessR

  • 问题内容: 实际上,我有1个查询,但无法将其转换为CakePHP查询格式。 当我将此查询转换为CakePHP时,会出现如下错误: 问题答案: 您可以轻松地在Cake上运行直接SQL查询,例如:$ this-> Picture-> query(“ SELECT * FROM pictures LIMIT 2;”); 或尝试与此类似的东西: ..确保您已正确链接Esl_Userresults和Esl_

  • 我只是想知道是否有办法将一个纯动态Lucene语法查询(包括用布尔运算符分隔的字段:值对)传递给QueryParser。查询将在运行时确定(可能使用自定义查询生成器)。由于QueryParser在实例化时需要一个字符串(默认字段名)和一个分析器,所以我不知道如何使用代码。 对此的任何帮助都将不胜感激。

  • 问题内容: 我目前在理解和编写递归查询时遇到一些麻烦。我知道递归查询用于搜索信息层次结构,但是我还没有找到一个可以遍历层次结构的简单在线解决方案。例如,假设我有一个对家谱建模的关系: 如果我想编写一个遍历此家谱的递归查询,收集所有父母直到出生,我该如何处理? 提前致谢。 问题答案: 您可以使用子句。 在您的情况下,SQL可能类似于: