小编AHi*_*ins的帖子

在sql server中使用OUTPUT子句有什么用

OUTPUT条款的目的是什么?我已经阅读了该子句的MSDN文档OUTPUT,其中包括以下示例:

DELETE FROM dbo.table1
OUTPUT DELETED.* INTO @MyTableVar
WHERE id = 4 OR id = 2;
Run Code Online (Sandbox Code Playgroud)

从上面的查询中,似乎删除的记录被保存在一个名为的魔术表中deleted,并且查询会将这些记录从魔术deleted表加载到名为MyTableVar的表中..

我仍然不明白OUTPUT条款用法的目的.

作为另一个SQL示例:

USE AdventureWorks2012;
GO
DECLARE @MyTableVar table( NewScrapReasonID smallint,
                           Name varchar(50),
                           ModifiedDate datetime);
INSERT Production.ScrapReason
    OUTPUT INSERTED.ScrapReasonID, INSERTED.Name, INSERTED.ModifiedDate
        INTO @MyTableVar
VALUES (N'Operator error', GETDATE());

--Display the result set of the table variable.
SELECT NewScrapReasonID, Name, ModifiedDate FROM @MyTableVar;
--Display the result set of the table.
SELECT ScrapReasonID, Name, ModifiedDate 
FROM …
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server

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

SQL Server中的算术溢出

我有一个存储过程,它计算两个坐标对之间的距离作为浮点数.我正在尝试使用它来过滤值列表但得到算术溢出错误.查询是:

SELECT * FROM Housing h  WHERE convert(float, dbo.CalculateDistance(35, -94, h.Latitude, h.Longitude)) <= 30.0
Run Code Online (Sandbox Code Playgroud)

哪个错误:

消息8115,级别16,状态6,行1算术溢出错误将float转换为数据类型numeric.

存储过程供参考:

CREATE FUNCTION [dbo].[CalculateDistance]
    (@Longitude1 DECIMAL(8,5),
    @Latitude1   DECIMAL(8,5),
    @Longitude2  DECIMAL(8,5),
    @Latitude2   DECIMAL(8,5))
RETURNS FLOAT
AS
BEGIN
DECLARE @Temp FLOAT

SET @Temp = SIN(@Latitude1/57.2957795130823) * SIN(@Latitude2/57.2957795130823) + COS(@Latitude1/57.2957795130823) * COS(@Latitude2/57.2957795130823) * COS(@Longitude2/57.2957795130823 - @Longitude1/57.2957795130823)

IF @Temp > 1
    SET @Temp = 1
ELSE IF @Temp < -1
    SET @Temp = -1

RETURN (3958.75586574 * ACOS(@Temp) )

END
Run Code Online (Sandbox Code Playgroud)

还尝试将结果转换为十进制,但没有效果.

sql sql-server math

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

SSIS - 使用Attunity Oracle Datasource在Oracle Query中使用参数

我在SSIS中使用Attunity Oracle连接器连接到远程Oracle Server.

在我的SSIS包中,我需要连接到Oracle数据库以根据datetime参数获取数据.

我按照这里的建议写了一个SELECT带参数的查询:

  1. 创建了一个包变量
  2. 将变量设置为计算为表达式true
  3. 将查询与表达式一起放在表达式中作为不同的包变量
  4. [Oracle Source].[SqlCommand]数据流的表达式设置为包变量(包含查询作为表达式)

我很擅长这里,但是如果你[Oracle Source].[SqlCommand]在数据流中设置表达式,那么我在数据流任务中的"Oracle Source"中设置了什么Query?如何获取输出列并执行转换?

在设置有效的Oracle数据源之前,我无法执行包.

每个建议都说要[Oracle Source].[SqlCommand]在数据流中设置属性,但没有人提到如何配置Oracle源代码.我在这里错过了什么吗?


更新(2014/02/18) -

基于@billinkc的评论,我使用非参数查询创建了数据源,并在数据流中添加了表达式.当我执行包时,数据源内的查询更改为我的包变量表达式中的任何内容,但它会引发错误:

遇到OCI错误.ORA-00936:缺少表达

这是我WHERE的查询子句,带有可变时间戳 -

Where SL.RECEIVED_DATE = TO_DATE( @[User::Last_Run_Timestamp] , 'dd/mon/yyyy HH24:MI:SS')

oracle ssis attunity

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

WITH 子句:使用 Hibernate 进行子查询分解

WITH dept_count AS (
  SELECT deptno, COUNT(*) AS dept_count
  FROM   emp
  GROUP BY deptno)
SELECT e.ename AS employee_name,
       dc.dept_count AS emp_dept_count
FROM   emp e,
       dept_count dc
WHERE  e.deptno = dc.deptno;
Run Code Online (Sandbox Code Playgroud)

我们如何将从上面的查询中检索到的数据(意味着由于使用WITH CLAUSE而创建的临时表dept_count)映射到以下java类?

我的 Java 类具有以下属性:employee_name、emp_dept_count。

sql hibernate hibernate-mapping with-clause

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

使用SELECT(max)T-SQL返回额外的列

第一篇文章所以请你好.[SQL Server 2014]

我目前正在对表格进行选择,如下所示

select 
ExerciseCultures.Name,
max (convert (decimal (10,2), cast(weight as float))) as [Max Weight (KG)]
from workoutsessions
        join ExerciseCultures on workoutsessions.ExerciseID 
        = ExerciseCultures.ExerciseID
group by ExerciseCultures.Name
Run Code Online (Sandbox Code Playgroud)

返回31行,每个exerciseID一个,显示每个行的最高"权重"值.

我需要的是一个附加列,它还显示每个行的日期.日期列已经是每个行旁的workoutsessions表中的一列.

我尝试使用以下内容添加此日期列:

select 
ExerciseCultures.Name,
max (convert (decimal (10,2), cast(weight as float))) as [Max Weight (KG)],
workoutsessions.date
from workoutsessions
        join ExerciseCultures on workoutsessions.ExerciseID 
        = ExerciseCultures.ExerciseID
group by ExerciseCultures.Name,
    workoutsessions.date
Run Code Online (Sandbox Code Playgroud)

但是这会返回286行 - 父表中的所有行.我需要的是原始查询结果,只有他们各自来自workoutsessions表的日期.

有什么想法吗?

非常感谢

sql t-sql sql-server sql-server-2014

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

SSIS包通过部署升级

在我们的 QA 虚拟环境中,包含多个 SQL Server,我想部署一个通过 Visual Studio 2010 维护的 SSIS 2012 包(ispac,项目部署)。目标 SSIS 服务器是 2012,但工作站上的客户端包括 SQL Server 2014。在工作站上执行 ispac 包并指定在 SQL Server 2012 上部署,部署没有任何错误。但是当在 SSIS 服务器上执行包时,我们会遇到如下错误

“包名称”:错误:包中的版本号无效。版本号不能大于当前版本
号。

“包名称”:错误:从节点“DTS:属性”加载值“8”时出错。

“包名称”:错误:从版本 8 到版本 6 的包迁移失败,错误为 0xC001700A“包中的版本号无效。版本号不能大于当前版本号。”。

我所有的包(.dtsx)都有

 <DTS:Property DTS:Name="PackageFormatVersion">6</DTS:Property>
Run Code Online (Sandbox Code Playgroud)

以及清单

<SSIS:Property SSIS:Name="PackageFormatVersion">6</SSIS:Property>
Run Code Online (Sandbox Code Playgroud)

看起来 SQL 2014 客户端或工作站将我的包升级到了 V8,即使我的目标服务器是 V6。当我直接从 SQL 2012 服务器(没有 SQL 2014)部署时,一切都按预期部署和运行。这是预期的结果吗?或有问题

sql-server deployment ssis

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

停止执行sql脚本

我有一个庞大的SQL脚本,有很多批次(使用GO).

在某些情况下,我想停止整个执行此脚本.

我尝试使用NOEXEC,但我继续获取无效的对象错误,因为我的脚本包括创建数据并将数据添加到新的表和列.

我不想使用RAISERROR,有没有其他方法可以做到这一点?

sql sql-server-2008

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

带有###(三重)或更多哈希值的临时表

我们知道,在 SQL Server 中,创建一个表的#意思是“本地临时表”,##意思是“全局临时表”。

但是当我创建一个如下表时:

create table ###MyTable(IntColumn int, ValueColumn varchar(100))
Run Code Online (Sandbox Code Playgroud)

该表是本地临时表还是全局临时表?我该如何测试?当我尝试select通过:

Select * from #MyTable -- SQL said it doesn't exists
Select * from ##MyTable -- SQL said it doesn't exists
Select * from ###MyTable -- I get the output
Run Code Online (Sandbox Code Playgroud)

如果第三种情况属实,这是否意味着这是名称为 的通用表###MyTable?我不会像其他所有物理表一样在我的 SSMS 表浏览器中看到这张表吗?

如果我开始在表名前添加多个 #(哈希)会发生什么?

sql-server temp-tables global-temp-tables

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

无法导入flup.server.fcgi

我正在按照这些步骤部署Django项目

我的.htaccess是:

AddHandler fcgid-script .fcgi
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ mysite.fcgi/$1 [QSA,L]
Run Code Online (Sandbox Code Playgroud)

我的.fcgi:

#!/homeX/your_username/python27/bin/python27
import sys, os

# Add a custom Python path.
sys.path.insert(0, "/homeX/your_username/python27")
sys.path.insert(13, "/homeX/your_username/myproject")

os.environ['DJANGO_SETTINGS_MODULE'] = 'myproject.settings'
from django.core.servers.fastcgi import runfastcgi
runfastcgi(method="threaded", daemonize="false")
Run Code Online (Sandbox Code Playgroud)

当我跑来python2.7 mysite.fcgi证明它有效时,它会让我:

无法导入flup.server.fcgi

我该怎么导入flup.server.fcgi

我使用的是:Django 1.8.7,flup 1.0.3,python 2.7,psycopg2postgreSQL,并使用一切都下载pip.

python django .htaccess fastcgi flup

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

SSIS错误代码:0x80040E37

有一个数据流任务,由excel源和sql目的地组成.当单独执行数据流任务时它运行良好.如果我执行此数据流在每个循环内部aa,它给出以下错误

[Excel Source [17]]错误:SSIS错误代码DTS_E_OLEDBERROR.发生OLE DB错误.错误代码:0x80040E37.

[Excel Source [17]]错误:打开"'Sheet Data $'"的行集失败.检查数据库中是否存在该对象.

[SSIS.Pipeline]错误:"Excel Source"验证失败并返回验证状态"VS_ISBROKEN".

有人有类似的问题!?

excel ssis ssis-2008

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