【问题标题】:Adding restriction to a SQL Server stored procedure script向 SQL Server 存储过程脚本添加限制
【发布时间】:2013-05-06 13:55:47
【问题描述】:

如何在限制之下添加这 2 个脚本,因此它不允许创建名称中少于 3 个字符的英雄,或者在更改英雄名称时它也不允许少于 3 个字符?

目前每个人都可以创建一个名字为:1 的英雄或更改他们的名字.. 基本上所有可能的变化都可用。我想将其限制为至少 3 个字符的名称。

我使用的是 Microsoft SQL Server 2005 / 64 位

将不胜感激。

亲切的问候。

【问题讨论】:

  • 您使用的是什么数据库系统?
  • Microsoft SQL Server 2005 ...抱歉,我在第一篇文章中忘记提及了。

标签: sql sql-server-2005 stored-procedures restriction


【解决方案1】:

在您的CREATE_NEW_CHAR 程序开始时,您可以这样做...

IF LEN(LTRIM(@CharID)) < 3  -- LEN() does an RTRIM()
BEGIN
  SET @nRet = 7
  RETURN
END

CHANGE_NEW_ID 过程中相同,但使用IF LEN(LTRIM(@NewCharID)) &lt; 3 代替。

执行过程后,调用应用程序可能已经在检查@nRet 的值。如果@nRet!=0,希望它会给出一个通用的错误消息。但是,您可能希望增强该代码,以便如果 @nRet=7 它可以显示有关输入的名称太短的特定错误消息。

我也更新了 Pastebin:CREATE_NEW_CHAR & CHANGE_NEW_ID

【讨论】:

  • 我不能在我的脚本中使用这些已经存在的行,或者我必须添加你建议的行吗? ... SET @x = 1WHILE (@x &lt;= LEN(@CharID)) ?
  • 我认为您想在进入 WHILE 循环之前检查长度以验证各个字符。
  • 在哪里进行检查并不重要.. 唯一重要的是当他们输入少于 3 个字符并单击按钮创建英雄时,脚本会限制他们并且不会创建它,直到他们使用 3 个或更多字符且不少于 3 个。所以,最后你能否将两个编辑过的脚本上传到 pastebin,因为我不想搞砸一些东西。因为我不能一个数据库备份现在并且是安全的。再次将不胜感激。
  • 是的,所以如果你把上面的IF放在WHILE循环之前,当名字不够长时它会立即退出程序。如果你想告诉用户它不起作用的原因,检查nRet的值。
  • 好,很酷,以前没用过 Pastebin,但是很简单 ;-) 添加了回答的链接。
猜你喜欢
  • 2015-06-17
  • 2019-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多