如果sysname不能为null,那么在这个SQL Server系统存储过程中sysname怎么可能= null呢?

2024-04-29

我读到了系统名不能为空 https://stackoverflow.com/questions/5720212/what-is-sysname-data-type-in-sql-server,但在系统过程的定义中sp_grantdbaccess,我看到将 null 分配给过程的参数之一(如果我没看错的话)。怎么会这样?

ALTER PROCEDURE [sys].[sp_grantdbaccess]
    @loginame   sysname,
    @name_in_db sysname = NULL OUT

"SYSNAME不可能是NULL“只是不正确。当链接问题的答案说它相当于NVARCHAR(128) NOT NULL as a default——然后有效地only在列定义中。比较:

-- When not specified, columns are NULL
SET ANSI_NULL_DFLT_ON ON  

-- Works
CREATE TABLE T(N NVARCHAR(128)); INSERT T DEFAULT VALUES; SELECT * FROM T
GO
DROP TABLE T
GO

-- When not specified, columns are NOT NULL
SET ANSI_NULL_DFLT_ON OFF

-- Error: can't insert NULL
CREATE TABLE T(N NVARCHAR(128)); INSERT T DEFAULT VALUES; SELECT * FROM T
GO
DROP TABLE T
GO

现在尝试同样的方法SYSNAME:

-- When not specified, columns are NULL
SET ANSI_NULL_DFLT_ON ON  

-- Error: SYSNAME is NOT NULL, regardless of defaults
CREATE TABLE T(N SYSNAME); INSERT T DEFAULT VALUES; SELECT * FROM T
GO
DROP TABLE T
GO

但这并不意味着SYSNAME不可能是NULL,我们所要做的就是说它可能是:

-- Works
CREATE TABLE T(N SYSNAME NULL); INSERT T DEFAULT VALUES; SELECT * FROM T
GO
DROP TABLE T
GO

在几乎所有其他使用类型的上下文中(变量、存储过程参数),我们无法指定NULL or NOT NULL and NULL值总是被允许的,所以这NOT NULL元数据很少相关。上面的代码使用常规表并非偶然:如果您对表变量尝试相同的操作,您会发现ANSI_NULL_DFLT_ON被忽略并且NULL如果未指定,则始终是列的默认值,因此唯一相关的情况是:

-- Can't insert NULL
DECLARE @T TABLE (N SYSNAME); INSERT @T DEFAULT VALUES; SELECT * FROM T@
GO

-- OK
DECLARE @T TABLE (N SYSNAME NULL); INSERT @T DEFAULT VALUES; SELECT * FROM @T
GO
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果sysname不能为null,那么在这个SQL Server系统存储过程中sysname怎么可能= null呢? 的相关文章

随机推荐

  • Eclipse JSP:默认文本文件编码不正确

    我有以下问题 我创建了一个新的 动态 Web 项目 并将一些现有的 jsp 文件导入其中 如果我右键单击导入的 jsp 文件之一 然后单击 属性 gt 资源 则在 文本文件编码 部分下 值为 默认 由内容类型确定 ISO 8859 1 不过
  • 带有图标和文本的 UITableViewRowAction

    有几个类似的问题 但我认为应该有一个针对 iOS 10 的最新答案 使用 Swift3 不使用私有 API 并且不依赖于将图标限制为 unicode表情符号 我现在有包含三个操作的表行 func tableView tableView UI
  • GSON 是一个 Java Throwable

    我有一个对象 其中包含一段数据和关联的异常 Public class MyBean Private String data Private Exception problem 当我尝试GSON toJSON 对象 它给了我一个循环引用抱怨
  • 如何让石斑鱼和轴一样长?

    对于我的作业 我应该使用 matplotlib 在地图上绘制 20 场飓风的轨迹 但是 当我运行我的代码时 出现错误 AssertionError Grouper and axis must be the same length 这是我的代
  • 从彩色背景中提取黑色对象

    人眼很容易辨别black来自其他颜色 但是计算机呢 我在普通的A4纸上打印了一些色块 由于组成彩色图像有青色 品红色和黄色三种墨水 所以我设置每个块的颜色C 20 C 30 C 40 C 50 以及其余两种颜色是 0 这是我的源图像的第一列
  • sprintf 风格字符串格式化的起源

    字符串格式化概念见sprintf如今几乎可以在任何语言中找到 你知道 用 s d f 等掩盖字符串 并提供变量列表来填充它们的位置 哪种语言最初具有提供此功能的库函数或语言结构 请指定某种来源参考以确认您的主张 以便我们避免纯粹的猜测或猜测
  • 使用 JavaScript 检查复选框时更改样式

    我正在尝试 没有成功 创建一个复选框 在选中时更改正文的某些样式属性 如下所示 我究竟做错了什么 提前致谢 您需要使用事件侦听器并在侦听器内运行该脚本 您在代码中所做的是在脚本运行时设置一次颜色 您没有告诉程序每次更改复选框时都进行检查 c
  • Java中的整数除法[重复]

    这个问题在这里已经有答案了 这感觉像是一个愚蠢的问题 但我在 Java 文档中找不到答案 如果我声明两个 int 然后将它们相除 到底发生了什么 他们是否转换为floats doubles首先 划分 然后投射回integer 或者除法是作为
  • React Router v4 NavLink 活动路由

    我正在尝试使用 v3 移植我的项目react router到现在所谓的 v4react router dom 现在 当我有一个 MenuBar 组件时 问题就出现了 该组件与路由逻辑完全分开 如您所期望的 因为无论当前路径是什么 它都会显示
  • 如何替换引号之间出现的任何单词

    我需要能够替换所有出现的单词 and 仅当它出现在单引号之间时 例如 将字符串中的 and 替换为 XXX This and that with you and me and others and not her and him 结果是 T
  • 如何将TabLayout与Recyclerview同步?

    我有一个TabLayout with Recyclerview这样当单击选项卡时Recyclerview滚动到特定位置 我也想要相反的过程 这样当Recyclerview滚动到特定位置 然后该特定选项卡会突出显示 例如 如果有 4 个选项卡
  • 关于使用 Ionic3 和 Hammer.JS 进行捏合缩放手势的独家新闻是什么?

    我需要能够在 Android 和 iOS 上进行捏合缩放以缩放字体大小 不仅仅是我在谷歌搜索时看到的众多示例中的常规图像 有人可以告诉我在 Ionic 3 中是否有一种简单的方法可以做到这一点吗 文档 https ionicframewor
  • Thread.yield()之后线程的Thread.State是什么?

    是什么Thread State之后的一个线程Thread yield 是不是一个Thread State WAITING 谢谢 不 线程仍会在RUNNABLE http download oracle com docs cd E17409
  • 为什么不是所有的 Angular 包都声明为 devDependency?

    我知道节点 快递 我知道之间的区别dependencies and devDependencies 我正在学习角度 我已经看完了官方教程 我认为有角度的应用程序在开发时被编译成一组静态文件 这些文件被上传到某个服务器 一旦客户端下载它们 所
  • 使用Postman测试.net core 2页面返回400错误请求

    我创建了 net core 2 Pages 的默认项目模板 然后尝试使用 postman 测试对页面 OnPostAsync 不是 api 控制器 的调用 但我总是收到 400 错误请求 尝试使用标头等 但没有成功 有人设法做到这一点吗 在
  • Ruby:我可以编写没有连接的多行字符串吗?

    有没有办法让这个看起来好一点 conn exec select attr1 attr2 attr3 attr4 attr5 attr6 attr7 from table1 table2 table3 etc etc etc etc etc
  • Django 1.7 makemigrations 冻结/挂起

    我终于从 Django 1 6 升级到 1 7 并在此过程中删除了 South 我跟着Django 官方说明 https docs djangoproject com en 1 7 topics migrations upgrading f
  • Material-ui 表:如何对表元素进行样式更改

    我正在使用 material ui 并尝试让表格元素在元素具有特定值时改变颜色 下面是我尝试过的代码 如果单元格值为 超出区域 背景应该变成红色 表格渲染得很好 但是切换颜色变化不起作用 这是怎么回事 或者我的方法全错了 function
  • 鼠标在两个视图上移动,如何让它们都处理`ACTION_MOVE`事件

    我有两个视图 较大的一个在底部 较小的一个在顶部 如下图所示 现在我在 view1 view2 外部 上按鼠标 然后移动到 view2 我发现即使鼠标在移动过程中位于view2内部 view2也不会得到ACTION MOVE事件 只有vie
  • 如果sysname不能为null,那么在这个SQL Server系统存储过程中sysname怎么可能= null呢?

    我读到了系统名不能为空 https stackoverflow com questions 5720212 what is sysname data type in sql server 但在系统过程的定义中sp grantdbaccess