小编Din*_*rer的帖子

SQL Server 2005表变量更新问题

我一直在阅读表变量和临时表之间的差异,并偶然发现表变量的以下问题.我没有看到我追求的文章中提到的这个问题.

我通过XML数据类型传递一系列PK,并在两个临时表结构中成功创建记录.当我尝试更新临时表中的其他字段时,表变量失败,但临时表没有更新语句的问题.需要做些什么?我想利用Table Variables承诺的速度提升......

以下是SP片段和结果:

CREATE PROCEDURE ExpenseReport_AssignApprover
(
    @ExpenseReportIDs       XML
)
AS


DECLARE     @ERTableVariable        TABLE   (   ExpenseReportID             INT,
                                                ExpenseReportProjectID      INT,
                                                ApproverID                  INT)


CREATE TABLE #ERTempTable
(
    ExpenseReportID             INT,
    ExpenseReportProjectID      INT,
    ApproverID                  INT
)

INSERT INTO @ERTableVariable (ExpenseReportID)
SELECT ParamValues.ID.value('.','VARCHAR(20)')
FROM @ExpenseReportIDs.nodes('/Root/ExpenseReportID') as ParamValues(ID)

INSERT INTO #ERTempTable (ExpenseReportID)
SELECT ParamValues.ID.value('.','VARCHAR(20)')
FROM @ExpenseReportIDs.nodes('/Root/ExpenseReportID') as ParamValues(ID)

UPDATE          #ERTempTable
SET             ExpenseReportProjectID = (  SELECT TOP 1 ExpenseReportProjectID 
                                                FROM ExpenseReportItem 
                                                WHERE(ExpenseReportID = #ERTempTable.ExpenseReportID))

UPDATE          @ERTableVariable
SET             ExpenseReportProjectID = (  SELECT TOP 1 ExpenseReportProjectID 
                                                FROM ExpenseReportItem …
Run Code Online (Sandbox Code Playgroud)

sql-server-2005

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

ALTER TABLE具有以编程方式确定的常量DEFAULT值

我试图添加一个列(MSSQL 2005)到一个表(Employee)与默认约束的另一个表(Department)的主键.然后我将把这个列作为该表的FK.基本上,如果没有提供DepartmentID,这将根据部门名称将新员工分配给基础部门.
这不起作用:

DECLARE     @ErrorVar       INT
DECLARE     @DepartmentID       INT

SELECT      @DepartmentID = DepartmentID
FROM        Department
WHERE       RealName = 'RocketScience'

ALTER TABLE     [Employee]
ADD             [DepartmentID] INT NULL
CONSTRAINT      [DepartmentIDOfAssociate] DEFAULT (@DepartmentIDAssociate)
SELECT @ErrorVar = @@Error
IF (@ErrorVar <> 0)
BEGIN
    GOTO FATAL_EXIT
END
Run Code Online (Sandbox Code Playgroud)

生产,测试和开发数据库已经变得不同步,DepartmentName ='RocketScience'的DepartmentID可能相同或不同,所以我不想只说DEFAULT(somenumber).无论我采用哪种方式攻击问题,我都会继续"在ALTER TABLE语句中不允许使用变量".
这样做的正确方法是什么?我已经尝试嵌套select语句,它获得"在此上下文中不允许子查询.只允许使用标量表达式."

另外,我可以在一个语句中填充列值而不是执行

{ALTER null}
{Update values}
{ALTER not null}

步骤.我读了一些有关WITH VALUES命令的内容,但无法使其工作.谢谢!!!

t-sql sql-server default alter-table

6
推荐指数
2
解决办法
8877
查看次数

SSRS 2005 - 运行组计数

您如何通过SSRS 2005显示正在运行的GROUP计数?

我有一个报告,其中有n个组,其中源数据必须保持匿名,我希望该组的标题中包含该数字...

因此,而不是像这样的组头中的名称...
员工 - 约翰史密斯
员工 - 玛丽斯温
...
员工 - 艾哈迈德萨尔

我想......
员工#1
员工#2
......
员工#n


谢谢!!!

reportingservices-2005 reporting-services

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

禁用时ASP.net文本框滚动

问候,我有一个表单,员工在多行文本框中输入注释,限制为4000个字符.我将行设置为8(显然是一个任意数字).

当主管查看注释时,文本框被禁用,因此无法修改员工注释.

问题是当数据扩展到第8行以下时.由于文本框被禁用,因此无法移动滚动条,并且主管无法查看所有注释.如果我将文本框和数据绑定隐藏到主管的标签中,没有任何换行符被维护,并且写得好的段落变成句子上的最大运行...

有没有办法启用滚动条使文本禁用?
有没有办法保留标签中条目的结构?

c# asp.net asp.net-3.5

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

SSRS 2008 R2 - 将总线添加到图表

我创建了一个折线图,显示一个月内发送的不同类型的消息(电子邮件,打印,语音),这些消息在图表上显示得很好.
是否有一种简单的方法可以添加另一行,它总计3系列的值而不更改SQL?

reporting-services ssrs-2008

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

检查日期范围的最快方法

我在SQLServer 2005中存储事件,事件发生的时间很重要,必须存储在日期库中.在where子句中编写日期范围检查的最快方法是什么,以确保选择当天的所有内容?

目前,当传递@DateStart和@DateEnd时,我将@DateStart设置为午夜,并将@DateEnd设置为午夜之前的最后一个瞬间,作为当天抓住每个可能事件的第一件事.

IF (@DateStart IS NOT NULL)
BEGIN
    SET @DateStart = CAST   (
                                (   CAST (DATEPART (yyyy,@DateStart) AS NVARCHAR(4)) +'/'+
                                    CAST (DATEPART (mm,@DateStart) AS NVARCHAR(2)) +'/'+
                                    CAST (DATEPART (dd,@DateStart) AS NVARCHAR(2)) +' '+
                                    '00:00:00.000'
                                )
                            AS DATETIME)
END

IF (@DateEnd IS NOT NULL)
BEGIN
    SET @DateEnd = CAST (
                            (   CAST (DATEPART (yyyy,@DateEnd) AS NVARCHAR(4)) +'/'+
                                CAST (DATEPART (mm,@DateEnd) AS NVARCHAR(2)) +'/'+
                                CAST (DATEPART (dd,@DateEnd) AS NVARCHAR(2)) +' '+
                                '23:59:59.997'
                            )
                            AS DATETIME
                        )
END
Run Code Online (Sandbox Code Playgroud)

所以where子句很容易阅读:

WHERE(EventDate> = @DateStart …

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

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