我正在开发一个数据库,该数据库将包含整个服务器上不同数据库中各种存储过程的许多详细信息.我现在试图收集的信息是"SP输出什么?"
在搜索中我发现答案在于OPENROWSET.我的初步测试成功,一切看起来都很棒.但是,在使用实时SP进行测试后,我遇到了一个主要问题:它与temp(#)表不兼容.
例如:
如果我要拿这个SP:
CREATE PROCEDURE dbo.zzTempSP(@A INT, @B INT) AS
SELECT @A AS A, @B AS B
Run Code Online (Sandbox Code Playgroud)
我可以使用以下代码轻松地将输出插入到临时(##)表中,然后查询tempdb的sysobjects并生成列及其数据类型的列表:
IF OBJECT_ID('tempdb.dbo.##TempOutput','U') IS NOT NULL DROP TABLE ##TempOutput
DECLARE @sql VARCHAR(MAX)
SELECT @sql = 'SELECT *
INTO ##TempOutput
FROM OPENROWSET(''SQLNCLI'', ''Server=' +
CONVERT(VARCHAR(100), SERVERPROPERTY('MachineName')) +
';Trusted_Connection=yes;'', ''SET FMTONLY OFF exec ' +
DB_NAME() +
'.dbo.zzTempSP @A=1, @B=2'')'
EXEC(@sql)
SELECT *
FROM ##TempOutput
Run Code Online (Sandbox Code Playgroud)
大!但是,如果SP是这样的:
CREATE PROCEDURE dbo.zzTempSP (@A INT, @B INT) AS CREATE TABLE dbo.#T (A INT, B INT)
INSERT INTO …
Run Code Online (Sandbox Code Playgroud) 我在postgres中有以下查询:
SELECT *
FROM "bookings"
WHERE ("bookings".client_id = 50)
ORDER BY session_time DESC
LIMIT 20 OFFSET 0
Run Code Online (Sandbox Code Playgroud)
第20位的记录与第21记录的会话时间相同.
此查询返回20个结果,但是如果将结果与整个数据库进行比较,则查询将返回第1-19个结果,第21个结果将跳过第20个结果.
可以通过向订单添加"id"来修复此查询:
SELECT *
FROM "bookings"
WHERE ("bookings".client_id = 50)
ORDER BY session_time DESC, id
LIMIT 20 OFFSET 0
Run Code Online (Sandbox Code Playgroud)
但是我想知道这个错误是怎么发生的?在使用抵消和限额时,postgres如何订购相同的字段?是随机的吗?这是postgres的错误吗?
我知道这个可能会有点令人困惑,我只是想着考虑最好的方法来解决这个问题!我现在在几个论坛上发布了这个,但我似乎没有任何运气.希望有人可以就如何做到这一点提出一些建议.
示例表(tbl_Bookings)
ID DateStarted DateEnded RoomID
1 16/07/2012 09:00 16/07/2012 10:00 1
2 16/07/2012 12:00 16/07/2012 13:00 1
Run Code Online (Sandbox Code Playgroud)
基本上,我想输入2个日期时间,例如16/07/2012 08:30和16/07/2012 13:30,它将查询我上面的示例表并返回'可用'时间,IE,我喜欢输出以下内容.
16/07/2012 08:30 - 16/07/2012 09:00
16/07/2012 10:00 - 16/07/2012 12:00
16/07/2012 13:00 - 16/07/2012 13:30
Run Code Online (Sandbox Code Playgroud)
我的问题是,这完全可以在SQL中使用吗?我试着想一想如何在VB中做到这一点,我也在努力解决这个问题.我的想法/尝试一直在使用Ron Savage的fn_daterange(如下所示)
if exists (select * from dbo.sysobjects where name = 'fn_daterange') drop function fn_daterange;
go
create function fn_daterange
(
@MinDate as datetime,
@MaxDate as datetime,
@intval as datetime
)
returns table
as
return
WITH times (startdate, enddate, intervl) AS
(
SELECT @MinDate as …
Run Code Online (Sandbox Code Playgroud) 我正在写一些资源管理系统.
资源是定义的实例.定义是元数据,基本上它包含属性.
这通常是我的DB:
TypeDefinition
id name
===============
1 CPU
PropertyDefinition
id name typeDefinitionId valueType
================================================
1 frequency 1 int
2 status 1 string
TypeInstance
id name typeDefinitionId
=================================
1 CPU#1 1
2 CPU#2 1
PropertyInstanceValue
id propertyDefinitionId typeInstanceId valueType intValue StringValue FloatValue
========================================================================================
1 1 1 int 10
2 2 1 string Pending
3 1 2 int 20
4 2 2 string Approved
Run Code Online (Sandbox Code Playgroud)
需求:
根据特定的属性值排序所有资源.
例如:根据状态排序所有资源- >含义CPU#2将出现在CPU#1之前,因为"已批准"在"待定"之前.
如果我们按照频率订购,CPU#1将出现在CPU#2之前,因为10在20之前.
所以我需要根据不同的列(intValue/stringValue/FloatValue/etc)对每次进行排序,具体取决于属性的valueType.
有什么建议吗?
局限性:
PIVOT目前是我们唯一想到的选择,但由于数据库很庞大,我不需要查询尽可能快.
非常感谢提前,
米哈尔.
我正在使用批量插入并获得以下错误:
注意:加载文件中的数据不是配置的列长度
从'C:\ temp\dataload\load_file.txt'批量插入load_data,其中(firstrow = 1,fieldterminator ='0x09',rowterminator ='\n',MAXERRORS = 0,ERRORFILE ='C:\ temp\dataload\load_file ")
user_name file_path asset_owner city import_date
admin C:\ admin toronto 04/12/2012
Run Code Online (Sandbox Code Playgroud)
消息4863,级别16,状态1,行1
第1行第6列的批量装入数据转换错误(截断)(已验证).
消息7399,级别16,状态1,行1
链接服务器"(null)"的OLE DB提供程序"BULK"报告错误.提供商未提供有关错误的任何信息.消息7330,级别16,状态2,行1
无法从OLE DB提供程序"BULK"获取链接服务器"(null)"的行.
有人可以解释一下这段代码8 2
是如何打印出来的吗?
public class Check{
public static void main(String args[]){
int x=0;
int y=0;
for(int z=0;z<5;z++){
if(++x>2||++y>2){
x++;
}
}
System.out.println(x+" "+y);
}
}
Run Code Online (Sandbox Code Playgroud) 我来自MSSQL背景,当我问我公司的人是否在某些列上创建了索引时,他们会说是,但请指出这些东西称为逻辑文件.
在iSeries Navigator中,这些逻辑文件显示在"视图"类别下.当我单击"索引"类别时,没有任何内容,这让我相信实际上没有在任何列上创建索引,至少我理解它们.逻辑文件似乎是按特定列排序的视图.
所以我的问题是,逻辑文件和索引(MSSQL意义上的索引)是一回事吗?
编辑:在尝试COALESCE方法之后,我现在看到一个问题,即每个瓦数类别的数据都在重复使用相同的数据.第2列是瓦数.
我创建了两个临时表,两者都具有完全相同的表结构.在这些表中,有多个列可以具有相同的值,然后是一些具有不同数字的值列.其中一些在一列中为NULL,而在另一列中不为null.我希望将所有值组合在一起,并且在具有相同站点和工厂的行上,我希望将值加入.
下面是两个表的外观和我期望的结果的示例
表格1:
SITE PLANT VALUE_1 VALUE 2
S1 P1 54 66
S1 P2 43 43
Run Code Online (Sandbox Code Playgroud)
表2:
SITE PLANT VALUE_1 VALUE_2
S1 P1 33 43
S2 P1 34 22
Run Code Online (Sandbox Code Playgroud)
结果:
SITE PLANT t1_VALUE_1 t1_VALUE_2 t2_VALUE_1 t2_VALUE2
S1 P1 54 66 33 43
S1 P2 43 43 NULL NULL
S2 P1 NULL NULL 34 22
Run Code Online (Sandbox Code Playgroud)
我最初的想法是完全加入.但是,这不起作用,因为在您的select语句中,您必须指定从哪里抓取列,如站点和工厂; 但要选择t1.site和t2.site将生成两列.我得到的最接近的是下面的查询,但是只要S2中有一个站点和工厂不在S1中的结果,就会收到S1和S2的空值.
SELECT t1.Site, t1.Plant, t1.Value_1, t1.Value_2, t2.Value_1, t2.Value_2
FROM table1 t1
FULL JOIN table2 t2
ON t1.site = t2.site
AND t1.plant = t2.plant
Run Code Online (Sandbox Code Playgroud) 我的问题很简单:我有一个包含一系列状态和时间戳的表(为了好奇,这些状态表示警报级别),我想查询此表以获得两种状态之间的持续时间.
看起来很简单,但这里有一个棘手的部分:我不能创建查找表,程序,它应该尽可能快,因为这个表是一个拥有超过10亿条记录的小怪物(不开玩笑!)...
架构很简单:
[pk]时间价值
(实际上,还有第二个PK,但这对此无用)
在真实世界的例子之下:
Timestamp Status 2013-1-1 00:00:00 1 2013-1-1 00:00:05 2 2013-1-1 00:00:10 2 2013-1-1 00:00:15 2 2013-1-1 00:00:20 0 2013-1-1 00:00:25 1 2013-1-1 00:00:30 2 2013-1-1 00:00:35 2 2013-1-1 00:00:40 0
仅考虑2级警报的输出应如下所示,应报告2级警报的开始及其结束时(达到0时):
StartTime EndTime Interval 2013-1-1 00:00:05 2013-1-1 00:00:20 15 2013-1-1 00:00:30 2013-1-1 00:00:40 10
我一直在尝试各种各样的内部连接,但是所有这些都引导我进行了一次惊人的笛卡尔爆炸.你能帮助我找到一种方法来实现这个目标吗?
谢谢!
我有一些使用显式强制转换操作定义的自定义包装器类型:
private class A
{
private readonly int _value;
public A(int value)
{
_value = value;
}
public int Value { get { return _value; } }
}
private class B
{
private readonly int _value;
private B(int value)
{
_value = value;
}
public int Value { get { return _value; } }
public static explicit operator B(A value)
{
return new B(value.Value);
}
}
Run Code Online (Sandbox Code Playgroud)
以下工作正常:
B n = (B)new A(5);
Run Code Online (Sandbox Code Playgroud)
这不是:
B n = (B)(object)new A(5);
// Throws …
Run Code Online (Sandbox Code Playgroud) sql ×8
sql-server ×5
t-sql ×3
.net ×1
c# ×1
casting ×1
database ×1
db2 ×1
dynamic-sql ×1
for-loop ×1
ibm-midrange ×1
indexing ×1
java ×1
limit ×1
offset ×1
openrowset ×1
postgresql ×1
sql-order-by ×1
vb.net ×1