标签: sql-server-2008

如何使用RAISERROR抛出消息并提交事务?

我需要使用RAISERROR来抛出一条消息(弹出消息)并提交该事务.有什么选择吗?

对于严重性18,事务得到了回滚.我已将严重性更改为10并尝试了

RAISERROR('Your Reference Number is %s',10,0,@param); 
Run Code Online (Sandbox Code Playgroud)

这但它提交了交易,但没有显示消息.我需要的是必须抛出消息并且必须提交事务

有什么建议吗?

sql raiserror sql-server-2008

-3
推荐指数
2
解决办法
6424
查看次数

试图连接多行..意外结果

问题:

我正在尝试返回一个包含所有连接在一起的父项名称的列的联系人列表.请不要打扰告诉我这违反了第1范式,我已经知道了.我一直试图让这个工作很长时间,这可能是一个愚蠢的错误,但我现在需要一些帮助.

查询:

SELECT  C.ID, C.SequenceNumber, C.ContactType, C.GUID, C.ContactCategory, MAP.Parents, C.LastName, C.FirstName, C.CompanyName, C.Title, C.Email, C.Phone, C.MobilePhone, C.Fax, C.Comments, C.StandardConfirmation, C.Active FROM
(
SELECT ContactTypeMapping.Contact_GUID, STUFF( ( SELECT ','+ [NAME]
                        FROM ContactParents a
                        WHERE a.GUID =b.GUID
                        FOR XML PATH('')),1 ,1, '') Parents

FROM ContactParents b, ContactTypeMapping
WHERE ContactTypeMapping.Parent_GUID=b.GUID 
) MAP
INNER JOIN
(
SELECT Contact.ID, Contact.GUID, Contact.SequenceNumber, 
       Contact.ContactType, Contact.ContactCategory, Contact.LastName, Contact.FirstName, 
       Contact.CompanyName, Contact.Title, Contact.Email, Contact.Phone, 
       Contact.MobilePhone, Contact.Fax, Contact.Comments, Contact.StandardConfirmation, Contact.Active
      FROM Contact
       )C
     ON (MAP.Contact_GUID=C.GUID)
Run Code Online (Sandbox Code Playgroud)

目前的结果:

ID   SequenceNumber  ContactType GUID …
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server-2008

-3
推荐指数
1
解决办法
557
查看次数

将SQL中的CASE表达式转换为SSIS中的派生列

CASE 
        WHEN CHARINDEX('%', '{FixedARMRateReductionLimit}') > 0 THEN
            CAST(SUBSTRING('{FixedARMRateReductionLimit}', 0, 
               CHARINDEX('%', '{FixedARMRateReductionLimit}')) as decimal)/100
        WHEN '{FixedARMRateReductionLimit}' = 'Weekly PMMS Rate' THEN
            PARAM_VAL_TXT
        ELSE
            .02
    END
Run Code Online (Sandbox Code Playgroud)

sql ssis sql-server-2008

-3
推荐指数
1
解决办法
2923
查看次数

从同一个表中选择男性和女性的姓名

这是我的'联系人'表.

| Names      |   Gender   |

| Mike       | Male       |
| Steve      | Male       |
| Kelly      | Female     |
| Jane       | Female     |
| Natasha    | Female     |
| Mathew     | Male       |
| Jack       | Male       |
Run Code Online (Sandbox Code Playgroud)

我想要这样的结果:

|  Male      |   Female   |   

| Mike       | Kelly      |
| Steve      | Jane       |
| Mathew     | Natasha    |
| Jack       |            |
Run Code Online (Sandbox Code Playgroud)

请给我解决方案在SQL Sever中实现此结果...任何建议表示赞赏!

sql-server-2008

-3
推荐指数
1
解决办法
829
查看次数

在列中插入默认值

我想在一个表中插入记录,其中列具有相同的值,用于插入所有记录.如何在不改变表结构的情况下完成.

Insert into tableA(clientid,no_of_users)
select clientid
from tableB
Run Code Online (Sandbox Code Playgroud)

我想要所有记录的no-of_users = 3

sql sql-server sql-server-2008

-3
推荐指数
1
解决办法
79
查看次数

SQL Server找到过去2个月的最后一周

INSERT INTO @blah (ID, Date)
    VALUES (123, '11/12/2012')
    VALUES (124, '11/30/2012')
    VALUES (125, '11/28/2012')
    VALUES (126, '12/1/2012')
    VALUES (127, '12/30/2012')
    VALUES (128, '12/25/2012')
    VALUES (129, '12/26/2012')
Run Code Online (Sandbox Code Playgroud)

我希望获得行,其中日期是相应月份的最后一周,可以追溯到两个月.这个月是2013年1月,所以我想要2012年12月和2012年11月的最后一周.

最终的选择是一个月的最后一周例子:2012年12月= 12/23-12/29但是现在生病在这个月的最后7天.

我知道如何获得最近两个月但不确定如何获得相应月份的最后一周..

select
    *
from
    @blah
where
    dateDiff(month,date,getdate()) < 2 ---only look at the last two months
Run Code Online (Sandbox Code Playgroud)

sql sql-server sql-server-2008

-3
推荐指数
1
解决办法
1383
查看次数

SQL Server 2008上的游标性能问题

我有一个遗留存储过程试图创建一个光标来遍历查询中的每一行.表现非常糟糕.然后我检查查询计划,大部分成本(> 47%)都在一个对象上[tempdb].[CWT_PrimaryKey].此对象由存储过程中创建的游标创建.不确定如何提高此案例的性能,因为在tempdbSQL Server创建的此对象上无法执行任何操作.

存储过程中的伪代码如:

BEGIN TRY
  BEGIN TRANSACTION

  declare mycusorr local fast_forward
        for SELECT *  From MyTab Where a=b;
  open mycusorr; 
  fetch next from mycusorr into @v1, @v2, ...;

  while @@fetch_status = 0
    begin
      --some query to check rules from different tables
      Update AnotherTab Set column=value where id = @v1;
      if (there is error)
         insert error to error user log table;

  End

  close mycusorr; 
  deallocate mycusorr; 

  COMMIT;
END TRY
BEGIN CATCH
  close mycusorr; 
  deallocate mycusorr; 
  SELECT …
Run Code Online (Sandbox Code Playgroud)

sql performance sql-server-2008 sql-server-2008-r2

-3
推荐指数
1
解决办法
329
查看次数

是否有必要使用@在sql server中创建表变量?

Declare @Mytable TABLE
(

 Field2 INT,
 Field2 VARCHAR(MAX)

)
Run Code Online (Sandbox Code Playgroud)

在Sql Server中创建表变量时,是否需要此"@"

谢谢advnc.

sql sql-server sql-server-2008

-3
推荐指数
1
解决办法
148
查看次数

为什么这个插入查询不起作用?

我是Microsoft SQL Server的新手,我有以下问题.

在数据库中,我有一个名为VulnerabilityAlertDocument的非常大的表,我必须在此表上执行插入操作.

所以我创建了以下插入查询:

INSERT INTO VulnerabilityAlertDocument (
            [Id], [VulnerabilityAlertId], [SourceId], [BugTraqID], [Title], 
            [StatusID], [CVE], [Published], [LastUpdated], [Remote],[Local],
            [Credibility],[Classification],[Availability], [Ease], [Authentication], 
            [CVSS2_BaseScore], [CVSS2_TemporalScore], [CVSS2_BaseVector], 
            [CVSS2_TemporalVector], [CVSS1_BaseScore], [CVSS1_TemporalScore], 
            [NVD_CVSS2_BaseScore], [NVD_CVSS2_ComponentString], [ImpactRating], 
            [Severity], [EaseofExploit], [UrgencyRating], [LastChange], 
            [ShortSummary], [Impact], [TechnicalDescription], [AttackScenario], 
            [Exploit], [Credit], [URL], [AlertStatusId], [Type], [DetailLevel], 
            [Language], [dd]
     VALUES ('10000', '10000', 'TEST', '12345', 'TEST TITLE', '46967', 'TEST CVE', 
             '2010-12-19 00:00:00.000', '2011-06-29 20:49:07.000', 'Yes','No', 
             'Vendor Confirmed', 'Boundary Condition Error', 'Always', 
             'No Exploit Available', 'Not Required', 'N.A.', 'N.A.', 'N.A.', …
Run Code Online (Sandbox Code Playgroud)

sql database sql-server rdbms sql-server-2008

-3
推荐指数
1
解决办法
104
查看次数

-3
推荐指数
1
解决办法
64
查看次数