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

如何使用T-SQL执行保存在表中的SQL语句

萧献
2023-03-14
问题内容

是否可以使用T-SQL执行存储在表中的SQL语句?

DECLARE @Query text
SET @Query = (Select Query FROM SCM.dbo.CustomQuery)

表中存储的语句是临时语句,可以是 SELECT TOP 100 * FROM ATable 到更复杂的语句:

Select
J.JobName As Job,
JD.JobDetailJobStart AS StartDate,
JD.JobDetailJobEnd AS EndDate,
(
    SELECT (DATEDIFF(dd, JD.JobDetailJobStart, JD.JobDetailJobEnd) + 1) -(DATEDIFF(wk, JD.JobDetailJobStart, JD.JobDetailJobEnd) * 2) -(CASE WHEN DATENAME(dw, JD.JobDetailJobStart) = 'Sunday' THEN -1 ELSE 0 END) -(CASE WHEN DATENAME(dw, JD.JobDetailJobEnd) = 'Saturday' THEN -1 ELSE 0 END)
) AS NumberOfWorkingDays,
JD.JobDetailDailyTarget AS DailyTarget,
JD.JobDetailWeeklyTarget AS WeeklyTarget,
JD.JobDetailRequiredQTY AS RequiredQuantity,
(
    Select SUM(sJL.JobLabourQuantityEmployees) From JobLabour sJL
) AS NumberOfEmployees,
(
    Select 
        SUM((sEM.EmployeeDesignationDefaultRate * sJL.JobLabourQuantityEmployees)*8)*(SELECT (DATEDIFF(dd, JD.JobDetailJobStart, JD.JobDetailJobEnd) + 1) -(DATEDIFF(wk, JD.JobDetailJobStart, JD.JobDetailJobEnd) * 2) -(CASE WHEN DATENAME(dw, JD.JobDetailJobStart) = 'Sunday' THEN -1 ELSE 0 END) -(CASE WHEN DATENAME(dw, JD.JobDetailJobEnd) = 'Saturday' THEN -1 ELSE 0 END))
    from EmployeeDesignation sEM
    Inner join JobLabour sJL on sJL.EmployeeDesignationID = sEM.EmployeeDesignationID
) AS FullEmployeeRate



from Job J
Inner Join JobDetail JD on JD.JobID = J.JobID
Inner Join JobLabour JL on JL.JobID = J.JobID

WHERE J.JobActive = 0

我想执行从T-SQL声明的 @Query 变量。这可能吗?(我正在运行MSSQL 2005环境)


问题答案:

您可以使用

EXECUTE sp_executesql @Query

运行您的T-SQL

这是SQL Server 2005的MS docn的链接

http://msdn.microsoft.com/zh-
cn/library/ms188001%28v=sql.90%29.aspx



 类似资料:
  • 问题内容: 我正在尝试将LIKE关键字与%通配符一起包装参数,但是我不确定如何在不破坏它的情况下将%字符放入语句中。现在我有: 我的.net应用程序中出现SqlException错误,提示“运行时’@search’附近语法不正确。如果删除@search参数周围的%字符,该错误就会消失。 问题答案: %字符必须 在 搜索字符串中… 请注意,以下内容也可以使用,但会引入潜在的SQL注入漏洞…

  • 问题内容: 我需要使用其“父”表中的数据更新SQL Server中的此表,如下所示: Table: sale Table: ud 包含要更新的正确值。 什么查询将执行此操作?我正在考虑a,join但不确定是否可行。 问题答案: 语法严格取决于您使用的SQL DBMS。这里有一些在ANSI / ISO(也可以在任何SQL DBMS中使用),MySQL,SQL Server和Oracle上完成此操作的

  • 问题内容: 我正在尝试使用HQL(hibernate查询语言)在两个表之间创建一个并集。此SQL脚本可在我的SQL服务器上正常运行: 问题是,当我尝试像这样在grails中运行它时: 我收到此错误: 如何在grails中运行上述SQL语句? 谢谢杰森 问题答案: HQL不支持联合。自2005年以来,Hibernate的JIRA中存在一个问题。

  • 问题内容: 大家好,我想执行我的SQL语句,但是我在synatx上遇到麻烦,有人可以帮助我了解我做错了什么吗? 谢谢,阿什。 问题答案: 您需要解决的最重要的事情是使用查询参数,而不是动态地构建字符串。这将提高性能,维护和安全性。 此外,您想使用较新的强类型ADO.Net对象。确保为添加使用指令。 注意此代码中的语句。完成连接后,他们将 确保 您的连接已关闭。这很重要,因为数据库连接是有限且不受管

  • 在Linux shell上,我们可以在一行中执行sql命令,如multiline: 但是sql脚本中的multiline在Windows中似乎不起作用。 如何在Windows中执行多行sql语句?mysql多行是否有某种? 当我使用echo并将其管道传输到时,输出的格式不是表 它只是输出 我希望得到以下输出:

  • 问题内容: 我有下表 我需要编写一个查询,该查询将返回不同的ID和对应的Number列值相乘。对于给定的表结果应该是这样的 (不使用游标) 问题答案: 这将适用于正数,也可以乘以负数,也可以使用ABS()函数使用绝对(正)值,但最终结果将是正数,而不是负数: 编辑:添加了测试脚本 输出: