小编Sma*_*003的帖子

而不是抛出错误类型块成功执行

最近我读到了UDT.我创建了一个类型,但我有一个问题.请查看以下内容

---drop type ssn
CREATE TYPE ssn
FROM VARCHAR(11) NOT NULL;

DECLARE @er ssn;

IF Object_id('TEMPDB.DBO.#ter', 'U') IS NOT NULL
    DROP TABLE #ter;

CREATE TABLE #ter (
    PERIOD_SID INT
    ,PERIOD_QUAR VARCHAR(10) PRIMARY KEY (PERIOD_SID)
    )

INSERT INTO #ter (
    PERIOD_SID
    ,PERIOD_QUAR
    )
SELECT *
FROM (
    VALUES (
        (1)
        ,(@er)
        )
    ) V(p, q)
Run Code Online (Sandbox Code Playgroud)

我创建了一个类型为ssn,varchar(11)不为null,并运行上面的一个逻辑,它成功执行 在此输入图像描述

根据我的假设,它应该抛出一个错误.

我需要知道为什么上面的逻辑成功运行.

编辑

根据建议我已将此udt添加为AQL服务器中的列,因为在oracle中我们可以创建一个集合类似于UDT的列

IF Object_id('TEMPDB.DBO.#ter1', 'U') IS NOT NULL
    DROP TABLE #ter1;

CREATE TABLE #ter1 (
    PERIOD_SID INT
    ,PERIOD_QUAR ssn PRIMARY KEY (PERIOD_SID)
    ) …
Run Code Online (Sandbox Code Playgroud)

sql sql-server sql-server-2012

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

在SQL Server中遇到一个查询

我有一张名为的桌子calci.以下是样本数据

CREATE TABLE calci
    (RN int, FREQ int, price int)
;

INSERT INTO calci
    (RN, FREQ, price)
VALUES
    (1, 1, 3),
    (2, 2, 4),
    (3, 3, 5),
    (4, 4, 6),
    (5, 5, 7),
    (6, 6, 8),
    (7, 1, 5),
    (8, 2, 6),
    (9, 3, 9),
    (10, 4, 7),
    (11, 5, 5),
    (12, 6, 1),
    (13, 1, 3)
;
Run Code Online (Sandbox Code Playgroud)

根据freq(1-6)的总和我只需要3条记录

结果应该是这样的

price
33 -----sum of first 6 records    
33 -----sum of next six records    
3  -----sum of …
Run Code Online (Sandbox Code Playgroud)

sql sql-server

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

更改或更新表后,row_overflow数据未转换为in_row数据

我正在学习Sql server中的分配单元,并了解了3种类型

  • In_row_data LOB_DATA
  • (大对象(LOB)数据).
  • 行溢出数据.

    IF EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE
         TABLE_NAME='TEST_ALLOCATION_UNITS')
    
     DROP TABLE TEST_ALLOCATION_UNITS
    CREATE TABLE TEST_ALLOCATION_UNITS(
     TEST_ID INT IDENTITY(1,1)
     ,NAME VARCHAR(4000)
     ,NAME1 VARCHAR(5000)
     )
     GO
    
    INSERT INTO TEST_ALLOCATION_UNITS (NAME,NAME1) VALUES ('APPLE','BANANA')
    GO 500
    
    Run Code Online (Sandbox Code Playgroud)

    我在其中插入了500条记录

不,我已经运行了代码,我得到了这样的结果

select s.type_desc before_alter from sys.allocation_units s 
join sys.partitions p on p.partition_id=s.container_id 
where p.object_id=object_id('test_allocation_units')
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

现在我改变了表并将每个列的大小减少到50个字节,然后再次运行上面的select语句

alter table test_allocation_units alter column name varchar(50)
alter table test_allocation_units alter column name1 varchar(50)

select s.type_desc from sys.allocation_units s 
join sys.partitions p on p.partition_id=s.container_id
where p.object_id=object_id('test_allocation_units')
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

题 …

sql sql-server

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

top 1如何在sql server 2012中运行

我有一张包含以下数据的表格

  IF OBJECT_ID('TEMPDB.DBO.#t1', 'U') IS NOT NULL
            DROP TABLE #t1;
CREATE TABLE #t1
    ([c1] varchar(100), [c2] varchar(10), [c3] varchar(100), [c4] varchar(100))
;

INSERT INTO #t1
    ([c1], [c2], [c3], [c4])
VALUES
    (93, '60-1.1.1.', 60, 3),
    (104, '60-1.2.1.', 60, 3),
    (102, '60-1.1.2.', 60, 3),
    (101, '60-1.2.2.', 60, 3),
    (92, '60-1.1.3.', 60, 3),
    (96, '60-1.2.3.', 60, 3),
    (103, '60-1.1.4.', 60, 3),
    (94, '60-1.2.4.', 60, 3),
    (105, '60-1.2.5.', 60, 3),
    (97, '60-1.2.6.', 60, 3),
    (99, '60-1.2.7.', 60, 3),
    (100, '60-1.2.8.', 60, 3),
    (98, '60-1.2.9.', …
Run Code Online (Sandbox Code Playgroud)

sql sql-server sql-server-2012

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

在关键字之间使用时,row num不显示任何行

当我使用rownum和关键字之间时,查询不会返回任何行.任何人都可以解释为什么查询不检索任何行?

select * from cus where rownum between 2 and 6;
Run Code Online (Sandbox Code Playgroud)

我只是想检查当rownum与关键字之间使用时是否会起作用.所以,我只是尝试了上面的查询来显示介于2和6之间的行.但是当我尝试执行查询时,它不会检索任何行.

提前致谢

sql oracle between oracle11g rownum

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

标签 统计

sql ×5

sql-server ×4

sql-server-2012 ×2

between ×1

oracle ×1

oracle11g ×1

rownum ×1