标签: t-sql

TSQL如何在用户定义的函数中输出PRINT?

基本上我想PRINT在用户定义的函数中使用语句来帮助我的调试.

但是我收到以下错误;

在函数的"PRINT"中无效使用副作用或时间相关的运算符.

这可不可以吗?

无论如何,以帮助我的用户定义函数调试?

t-sql user-defined-functions

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

在SQL LIKE子句中使用SqlParameter不起作用

我有以下代码:

const string Sql = 
    @"select distinct [name] 
      from tblCustomers 
      left outer join tblCustomerInfo on tblCustomers.Id = tblCustomerInfo.CustomerId  
      where (tblCustomer.Name LIKE '%@SEARCH%' OR tblCustomerInfo.Info LIKE '%@SEARCH%');";

using (var command = new SqlCommand(Sql, Connection))
{       
    command.Parameters.AddWithValue("@SEARCH", searchString);
    ...
}
Run Code Online (Sandbox Code Playgroud)

这不起作用,我也试过这个:

const string Sql = 
    @"select distinct [name] 
     from tblCustomers 
     left outer join tblCustomerInfo on tblCustomers.Id = tblCustomerInfo.CustomerId  
     where (tblCustomer.Name LIKE @SEARCH OR tblCustomerInfo.Info LIKE @SEARCH );";

using (var command = new SqlCommand(Sql, Connection))
{       
    command.Parameters.AddWithValue("@SEARCH", "'%" + searchString + "%'");
    ... …
Run Code Online (Sandbox Code Playgroud)

c# t-sql sql-server ado.net sql-like

65
推荐指数
3
解决办法
6万
查看次数

INSERTing到没有值的表的语法?

我有一个使用以下模式创建的表:

CREATE TABLE [dbo].[Visualizations]
(
    VisualizationID     int identity (1,1)      NOT NULL
)
Run Code Online (Sandbox Code Playgroud)

由于表没有可设置的字段,我不知道如何插入记录.我试过了:

INSERT INTO [Visualizations];
INSERT INTO [Visualizations] () VALUES ();
Run Code Online (Sandbox Code Playgroud)

都没有工作.这样做的正确语法是什么?

编辑:由于很多人似乎对我的表感到困惑,因此它纯粹用于表示多个子表的父级...每个子表都用FK引用这个表,每个FK都是PK,所以在所有子表中在这些表中,ID是唯一的.

sql t-sql sql-server insert

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

这个黑客试图做什么?

如果你搜索:

http://www.google.co.uk/search?q=0x57414954464F522044454C4159202730303A30303A313527&hl=en&start=30&sa=N

你会看到许多试图破解的例子:

1) declare @q varchar(8000) select @q = 0x57414954464F522044454C4159202730303A30303A313527 exec(@q) --
Run Code Online (Sandbox Code Playgroud)

这是怎么回事?它正在尝试使用哪个数据库?你知道有关于此的任何建议吗?

t-sql windows sql-server security sql-injection

65
推荐指数
4
解决办法
6764
查看次数

将列添加到表,然后在事务内更新它

我正在创建一个将在MS SQL服务器中运行的脚本.此脚本将运行多个语句,并且需要是事务性的,如果其中一个语句失败,则停止整体执行并回滚任何更改.

在发出ALTER TABLE语句以向表中添加列然后更新新添加的列时,我在创建此事务模型时遇到问题.为了立即访问新添加的列,我使用GO命令执行ALTER TABLE语句,然后调用我的UPDATE语句.我面临的问题是我无法在IF语句中发出GO命令.IF语句在我的事务模型中很重要.这是我尝试运行的脚本的示例代码.另请注意,发出GO命令会丢弃@errorCode变量,并且需要在使用之前在代码中声明(这不在下面的代码中).

BEGIN TRANSACTION

DECLARE @errorCode INT
SET @errorCode = @@ERROR

-- **********************************
-- * Settings
-- **********************************
IF @errorCode = 0
BEGIN
 BEGIN TRY
  ALTER TABLE Color ADD [CodeID] [uniqueidentifier] NOT NULL DEFAULT ('{00000000-0000-0000-0000-000000000000}')
  GO
 END TRY
 BEGIN CATCH
  SET @errorCode = @@ERROR
 END CATCH
END

IF @errorCode = 0
BEGIN
 BEGIN TRY
  UPDATE Color
  SET CodeID= 'B6D266DC-B305-4153-A7AB-9109962255FC'
  WHERE [Name] = 'Red'
 END TRY
 BEGIN CATCH
  SET @errorCode = @@ERROR
 END CATCH
END

-- **********************************
-- …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server transactions alter-table

65
推荐指数
3
解决办法
6万
查看次数

更新另一个表中的行

我有一个包含2列的表,Country和Qty.田野国家有所有国家的截然不同的缩略词.现在我的工作是用实际的国家名称替换这些首字母缩略词.现在有另一个表格,包含首字母缩写词和相应的国家名称.我必须从第二个表中获取值并更新Acronyms匹配的第一个表.请帮忙..

t-sql

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

使用Sql Server中的子查询更新查询

我有一个简单的表格结构如下:

tempData

????????????????????
?   NAME   ? MARKS ?
????????????????????
? Narendra ?    80 ?
? Ravi     ?    85 ?
? Sanjay   ?    90 ?
????????????????????
Run Code Online (Sandbox Code Playgroud)

而且我还有另一个表名为tempDataView,就像这样

????????????????????
?   NAME   ? MARKS ?
????????????????????
? Narendra ?       ?
? Narendra ?       ?
? Narendra ?       ?
? Narendra ?       ?
? Ravi     ?       ?
? Ravi     ?       ?
? Sanjay   ?       ?
????????????????????
Run Code Online (Sandbox Code Playgroud)

我想更新表tempDataView,通过设置标志 根据tempDataView - 名称相比的TempData - 名称

是的,让我告诉你我尝试了什么,我试图用Cursor解决这个问题,并且它完美地解决了,但我找到了使用Subquery解决它的方法 …

sql t-sql sql-server sql-update

65
推荐指数
3
解决办法
23万
查看次数

每个SQL Server外键都应该有匹配的索引吗?

为SQL Server数据库中的每个外键创建索引是一种好习惯吗?

sql t-sql sql-server

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

我可以在没有DEFAULT值的情况下添加非空列

我可以添加一个我指定为NOT NULL的列,我不想指定DEFAULT值,但是MS-SQL 2005说:

ALTER TABLE只允许添加可以包含空值的列,或者指定了DEFAULT定义,或者添加的列是标识或时间戳列,或者如果以前的条件都不满足,则表必须为空以允许添加这个专栏.列'test'不能添加到非空表'shiplist'中,因为它不满足这些条件.

如果是,请告诉我语法,如果不,请说明原因.

sql t-sql sql-server sql-server-2005

64
推荐指数
4
解决办法
7万
查看次数

了解CUBE和ROLLUP之间的差异

我的任务要求我找出"每个日期写了多少发票?"

我有点陷入困境,并向我的教授寻求帮助.她通过电子邮件向我发送了一个问题,回答了这个问题,"每种类型和版本的炉子已经建成了多少?对于挑战但没有额外的积分,包括炉灶的总数."

这是她发给我的查询:

SELECT STOVE.Type + STOVE.Version AS 'Type+Version'
, COUNT(*) AS 'The Count'
FROM STOVE
GROUP BY STOVE.Type + STOVE.Version WITH ROLLUP;
Run Code Online (Sandbox Code Playgroud)

所以,我调整了那个查询,直到满足了我的需求.这就是我想出的:

SELECT InvoiceDt
, COUNT(InvoiceNbr) AS 'Number of Invoices' 
FROM INVOICE 
GROUP BY InvoiceDt WITH ROLLUP 
ORDER BY InvoiceDt ASC;
Run Code Online (Sandbox Code Playgroud)

它返回了我想要的以下结果.

无论如何,我决定阅读ROLLUP条款,并从微软的一篇文章开始.它说ROLLUP子句类似于CUBE子句,但是它通过以下方式区别于CUBE子句:

  1. CUBE生成一个结果集,显示所选列中所有值组合的聚合.
  2. ROLLUP生成一个结果集,显示所选列中值的层次结构的聚合.

所以,我决定用CUBE替换我的查询中的ROLLUP,看看会发生什么.他们产生了相同的结果.我猜这就是我感到困惑的地方.

看来,如果你使用的是我在这里的查询类型,那么这两个条款之间没有任何实际的区别.是对的吗?或者,我不明白什么?当我读完微软的文章时,我曾想过,使用CUBE子句我的结果应该是不同的.

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

64
推荐指数
3
解决办法
9万
查看次数