小编KM.*_*KM.的帖子

具有选择语句,执行动态SQL和返回值的表

我有一个select语句,它返回一个充满SELECT语句的表(它遍历每个表中的每一列,并创建一个select来查找该列是否包含任何错误数据).

我需要将此表充满SELECT语句,执行它们,并查看它们是否返回行.如果count(*)> 0,那么我想打印出一些数据.

我以为我必须使用光标,但我不知道如何实现这一目标.

这是我的代码来获取坏数据的计数.

SELECT 'SELECT count(*),  '' '+sysobjects.name + ' - ' + syscolumns.name + 
    ' '' FROM ['
         +sysobjects.name + '] WHERE UNICODE(SUBSTRING(['+syscolumns.name+'],Len(['+syscolumns.name+']),1)) = 0' 
         FROM sysobjects 
    JOIN syscolumns ON sysobjects.id = syscolumns.id
    JOIN systypes ON syscolumns.xtype=systypes.xtype
   WHERE sysobjects.xtype='U' and systypes.name IN ('varchar', 'nvarchar')
ORDER BY sysobjects.name,syscolumns.colid
Run Code Online (Sandbox Code Playgroud)

这将返回一个包含以下行的表:

SELECT count(*),  ' All_MW_Users - LastName ' FROM [All_MW_Users] WHERE UNICODE(SUBSTRING([LastName],Len([LastName]),1)) = 0
Run Code Online (Sandbox Code Playgroud)

我需要执行这个select,如果count(*)> 0,则打印第二列. 除非有数据要显示,否则我不想在结果或消息中显示任何内容.

sql sql-server sql-server-2005 dynamic-sql

6
推荐指数
1
解决办法
8639
查看次数

查找SQL Server 2005 Management Studio的注册表

我想要注册表值SQL Server 2005 Management Studio(因为我们的应用程序依赖;)在安装我的应用程序之前,我正在检查SQL Server 2005 Management Studio是否存在,并且我已经交叉检查了SQL Server Management Studio和Express Edition它具有不同的注册表值,对于SQL Server Management Studio Developer Edition,它具有不同的注册表值; 我想要的只是SQL Server 2005 Management Studio的通用注册表,以便我可以在安装我的产品之前检查它.

sql-server ssms sql-server-2005

5
推荐指数
1
解决办法
4292
查看次数

将列与t-sql中的值列表进行比较

我有一种情况,我在页面上显示记录,我需要一种方法让用户选择要在另一页上显示的那些记录的子集.这些记录不存储在任何地方,它是动态生成的东西.我知道我可以使用jquery将逗号分隔的值传递给我的其他网页,但我不确定在sql中最好的方法是说哪个uniqueid在这个id列表中不在表等中我我知道我可以用一堆ors动态构造sql,但这看起来像是一个黑客.还有其他人有什么建议吗?

t-sql sql-server

5
推荐指数
1
解决办法
1万
查看次数

从更新的行中获取值

我正试图从java中的UPDATE语句中获取新的评级

int userID = 99;

String sql = "UPDATE table SET rating=rating+1 WHERE user_REF="+userID;
statement.executeUpdate(sql);
Run Code Online (Sandbox Code Playgroud)

我可以只做另一个SELECT语句,但更新时是否有更好的方法来检索值或行?

java mysql sql jdbc

5
推荐指数
1
解决办法
1700
查看次数

SQL Max参数

在这里读到,可以传递给存储过程的最大参数数量是2100.

我只是好奇什么样的系统需要通过2100参数的SP,并且不能将它分成多个SP?

我认为也许一个称为多个SP的SP需要通过很多参数,我只是无法理解这个令人作呕的判断EXEC.

sql sql-server parameters

5
推荐指数
2
解决办法
3642
查看次数

单个If语句需要在代码块中开始和结束

我之前遇到过这个问题,并且想知道为什么"开始"和"结束"需要产生正确的值.if语句是单例,并且不需要"Begin"和"End",其中if中的多个语句将需要它,如果省略则在尝试创建/更改过程时会生成执行错误.

有关为什么在MS SQL中发生此行为的任何想法?????

谢谢,克雷格

- 结果集2返回正确的值.

SQL.

 Declare @Qty DECIMAL(10,2), @UOM VARCHAR(5), @CasePack Numeric(7,1), @CaseQty Numeric(11, 4), @im_weigh_item SmallInt, @rank_wi_ven_ctg Char(1), @po_qty_uom Char(1), @po_Qty float

 Select 
  -- these 2 Params are Const in this process
  @im_weigh_item =0, @rank_wi_ven_ctg = 'C', 
  -- Set Values
  @UOM = 'C' , @po_Qty_uom = 'M', @po_Qty = 3,  @casepack =6, @Qty = 2

 /*
  Check and Set vars. accordingly
  This Conditional Block Generates no errors, but the results are incorrect
  ** NO "Begin" & End" …
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server if-statement

5
推荐指数
2
解决办法
2万
查看次数

在CASE语句中使用CAST时的数据转换错误

运行以下时,我收到错误'错误将数据类型nvarchar转换为浮动'

     declare 
     @completeCommand       nvarchar (max) = 'x'
    ,@paramVal              nvarchar (100)
    ,@paramName             nvarchar (100)
    ,@paramType             nvarchar (100)
    ,@tempParam             sql_variant

  declare @parameterList table (
      RowID           int identity (1,1)
     ,ParameterValue  nvarchar (100)
     ,ParameterName   nvarchar (100)
     ,ParameterType   nvarchar (100)
  )

  insert into @parameterList
  values
     ('10', 'Param1', 'int')
    ,('test', 'Param2', 'nvarchar')

  -- Process each parameter one at a time
  declare ParameterCursor cursor fast_forward for
    select ParameterValue, ParameterName, ParameterType
    from @parameterList
    order by RowID

  open ParameterCursor

  fetch next from ParameterCursor into @paramVal, @paramName, @paramType

  if @@FETCH_STATUS …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server sql-server-2008

5
推荐指数
1
解决办法
5745
查看次数

SQL - 根据行数限制返回的行数

这是我的数据:

item_ID | group_ID | count_of_items_in_group

2|ABC|3

5|ABC|3

9|ABC|3

29|DEF|3

3|DEF|3

4|DEF|3

200|XYZ|2

300|XYZ|2

600|GHI|1
Run Code Online (Sandbox Code Playgroud)

SQL Filddle: http ://sqlfiddle.com/#!2/dfe09/1

对于每个组,我想限制返回的item_ID的数量最多为2.我不关心返回哪两个.如果组少于2行,则只返回1行.

我不能为每个组写一个select top*2并且联合选择因为我有几百个组.

我不知道从哪里开始,非常感谢你的帮助.

使用MS SQL 2005

(表格布局与示例中的完全一样,它是基于多个查询的视图)

sql sql-server sql-server-2005

5
推荐指数
2
解决办法
2088
查看次数

如何在没有UNION的情况下为其子项选择一个父行和其他行?

我有一个父表和子表,并希望创建一个select语句,给定父ID,返回该父项的和每个子项的其他行.当存在一个或多个子节点时,执行左连接并不会为父提供一行.我知道这可以通过UNION完成,但我正在寻找一种使用union语句的解决方案.这可能吗?

[父表]

ID     Name
-------------
1    | Bob
Run Code Online (Sandbox Code Playgroud)

[儿童表]

ID     ParentId   Name
-----------------------
1    | 1        | Jim    
2    | 1        | Ned  
Run Code Online (Sandbox Code Playgroud)

查询结果我正在寻找:

Parent_Name   Child_Name
---------------------------
Bob         | NULL <- I need this null here
Bob         | Jim
Bob         | Ned
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server union parent-child

4
推荐指数
1
解决办法
1930
查看次数

从SQL Server中的DateTime字段中获取"日期"

我有一个日期列,其中日期以格式显示2009-11-18 10:55:28.370.

我只想从该值中获取日期(而不是时间).我怎么做?

t-sql sql-server datetime sql-server-2008

4
推荐指数
1
解决办法
2万
查看次数