SQL SERVER修改python 函数名名容易引发的哪些问题

SQL中用户自定义函数,实在是不知道怎么改_百度知道
SQL中用户自定义函数,实在是不知道怎么改
CREATE FUNCTION count
(@cname char (10))
RETURNS int
DECLARE @x int
@x=count(*) from
course c,sc
WHERE cname = @cname and c.cno=sc.cno
SELECT cname 课程名,
count('英语') 选课人...
我有更好的答案
SELECT cname 课程名,
dbo.count('英语') 选课人数
FROM course
WHERE cname = '英语'试试
可是我们老师说dbo是数据库的拥有者可以不写
试试不就知道了;SQLSERVER要求在调用函数时,只有返回表值的函数可以不加所有者,否则必须加所有者名称,
采纳率:78%
来自团队:
为您推荐:
其他类似问题
函数的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。SQL SERVER 2008怎么用命令代码修改文件组的名称以及 怎么创建一个文件指定一个文件组?_百度知道
SQL SERVER 2008怎么用命令代码修改文件组的名称以及 怎么创建一个文件指定一个文件组?
谢谢大家帮帮忙
我有更好的答案
...语句即可.ndf&#39..修改文件组的名称alter database database_name
modify filegroup old_filegroup_name
name=new_filegroup_name创建一个文件指定一个文件组假如原来就存在一个文件组filegroup_1那么就这么写alter database database_nameadd file(
name=&#39.)to filegroup filegroup_1假如不存在文件组filegroup_1可以先创建一个,如下alter database database_name
add filegroup filegroup_1之后重复上面的alter database.,
maxsize=.;,
filename='d:\,
filegrowth=;file_name..;file_name&#39
采纳率:70%
为您推荐:
其他类似问题
文件组的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。2008年 总版技术专家分年内排行榜第二
2010年 总版技术专家分年内排行榜第四2009年 总版技术专家分年内排行榜第五2007年 总版技术专家分年内排行榜第六
2008年 总版技术专家分年内排行榜第二
2010年 总版技术专家分年内排行榜第四2009年 总版技术专家分年内排行榜第五2007年 总版技术专家分年内排行榜第六
2008年 总版技术专家分年内排行榜第二
2010年 总版技术专家分年内排行榜第四2009年 总版技术专家分年内排行榜第五2007年 总版技术专家分年内排行榜第六
2007年12月 总版技术专家分月排行榜第二
2011年7月 荣获微软MVP称号2009年7月 荣获微软MVP称号2010年7月 荣获微软MVP称号2008年7月 荣获微软MVP称号
匿名用户不能发表回复!|sqlserver中通过函数赋予权限,为什么这里出错了,应该怎么改?_百度知道
sqlserver中通过函数赋予权限,为什么这里出错了,应该怎么改?
我有更好的答案
这什么乱七八糟的代码,语法不对不说,使用方法也不对sp_addrole是把角色赋予某个用户,'abcd&#39,grant select on table to &#39。你基本语法都还没搞清楚;把数据库拥有者角色赋予给abcd用户。然后你下面那个又是什么乱七八糟的代码;abcd'把表的查询权限授予给abcd用户;db_owner',例如sp_addrole &#39。。
你写个函数试试看啊!
年轻人,火气不要这么大,自己多去看看教材,学学基本语法再来。这种连100行都不到的函数很简单,但是我就算在这敲100行废话我也不会帮你敲这个函数代码知道不?因为你这态度不值得我给你回答。
采纳率:88%
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。重命名数据库存储过程/函数/视图/触发器应注意的问题
重命名存储过程/函数/视图/触发器应注意的问题
我很奇怪为什么我在using Sql Server Management Studio 重命名存储过程去能看到正确的定义。我做了一些调查研究,发现如下。
&创建一个存储过程
1.CREATE PROCEDURE TestProc&
3.SELECT 'Hello'
现在在manage studio 中把它改名为 &NewTestProc&.
看一下名字是否更新成功
1.sp_helptext TestProc&
3.Msg 15009, Level 16, State 1, Procedure sp_helptext, Line 54&
4.The object 'TestProc' does not exist in database 'xmlworkshop'&
5.or is invalid for this operation.&
这表明这个存储过程对象重命名成功,我们来查看一下这个改过的存储过程的文本。
1.sp_helptext NewTestProc&
4.---------------------------&
5.CREATE PROCEDURE TestProc&
7.SELECT 'Hello'
注意代码块中存储过程的名字,依然是&Test Proc& &另外一种查看存储过程,视图,触发器定义的方法是使用OBJECT_DEFINITION()函数
1.SELECT OBJECT_DEFINITION(OBJECT_ID('NewTestProc')) AS body&
4.------------------------------------------------------------&
5.CREATE PROCEDURE TestProc&
7.SELECT 'Hello'
结果是一样的,我们直接从的目录视图看看
01.SELECT text FROM sys.syscomments&
02.WHERE id = OBJECT_ID('NewTestProc')&
05.-------------------------------------&
06.CREATE PROCEDURE TestProc&
08.SELECT 'Hello'
那么,如果存储过程代码提中的名字没有更新的话,SQl Server怎么会执行正确的存储过程呢? 我们看到字系统元数据中过程的名字已经改了,但是存储过程的定义却没有改。,当执行存储过程的时候,Sql Server会首先找到存储过程的对象ID,然后用对象ID 得到代码体,然后执行代码体中的定义。
重明明过程中问题在哪?
&我们看到重命名存储过程,视图,函数之后,Sql Server能够正确识别和执行存储过程的定义,那么问题在哪?
我看到这种方法的一个问题。我身边大部分的开发人员使用Management Studio 去修改存储过程 视图等。在management studio中找到修改的对象,点击右键选择&Modify&或则&Generate alter script& 菜单,在一个新的查询窗口中修改然后执行保存。
但是在更早之前,我遇到一些开发人员,他们不愿意是用management studio 来做更改,他们则用sp_helptext 来快速获取对象的代码体,修改以及执行保存等。我觉得采用这种方式应该很小心,因为这样修改保存以后新的存储过程不会被更新,取而代之的是,一个新的存储过程会被创建,他的名字是原来存储过程的名称,代码体却是新的定义。
几年前,我经常跟人说不要使用sp_helptext去编辑修改存储过程,视图等对象,其原因是,在SQL Server 2000的版本sp_helptext的TSQL代码没有保留格式,所以后,你将失去所有的格式作出修改等。但是,在SQL Server 2005的版本sp_helptext的能够保存格式,所以我不再坚持人不使用sp_helptext。
但现在我有更多的理由,建议不使用sp_helptext进行修改的过程,视图,触发器和函数等.
Management Studio 的处理过程
调查Management Studio 是处理过程很有意思,如果使用management studio生成存储过程的脚本能够得到正确的定义,可以使用&Modify&选项生成&create/alter&脚本
注意,生成的脚本包含正确的存储过程的名称
01.USE [xmlworkshop]&
03./****** Object: &StoredProcedure [dbo].[NewTestProc] & &&
04.Script Date: 09/28/:31 ******/&
05.SET ANSI_NULLS ON
07.SET QUOTED_IDENTIFIER ON
09.ALTER PROCEDURE [dbo].[NewTestProc]&
11.SELECT 'Hello'
management studio是如何获取正确的对象定义的?我们用Sqlserver Profiler 分析器来看一下当我们在management studio中点击&Modify& 生成脚本时候执行什么样的sql语句。
你会发现SSMS 执行了如下的查询语句去获取对象的定义
01.exec sp_executesql N'SELECT&
02.ISNULL(smsp.definition, ssmsp.definition) AS [Definition]&
04.sys.all_objects AS sp&
05.LEFT OUTER JOIN sys.sql_modules AS smsp ON smsp.object_id = sp.object_id&
06.LEFT OUTER JOIN sys.system_sql_modules AS ssmsp ON ssmsp.object_id = sp.object_id&
08.(sp.type = @_msparam_0 OR sp.type = @_msparam_1 OR sp.type=@_msparam_2)&
09.and(sp.name=@_msparam_3 &
10.and SCHEMA_NAME(sp.schema_id)=@_msparam_4)'
11.,N'@_msparam_0 nvarchar(4000),@_msparam_1 nvarchar(4000),&
12.@_msparam_2 nvarchar(4000),@_msparam_3 nvarchar(4000),@_msparam_4 nvarchar(4000)',&
13.@_msparam_0=N'P',@_msparam_1=N'RF',@_msparam_2=N'PC',&
14.@_msparam_3=N'NewTestProc',@_msparam_4=N'dbo'
17.Definition&
18.-------------------------------&
19.CREATE PROCEDURE TestProc&
21.SELECT 'Hello'
可以看到SSMS找到相同的定义(旧的名称),但是management studio很智能修改了定义呈现给我们,还有一点有意思的是,在SSMS中保存ALTER PROCEDURE的脚本后,对象的名称得到了更新
01.USE [xmlworkshop]&
03./****** Object: &StoredProcedure [dbo].[NewTestProc] & &&
04.Script Date: 09/28/:31 ******/&
05.SET ANSI_NULLS ON
07.SET QUOTED_IDENTIFIER ON
09.ALTER PROCEDURE [dbo].[NewTestProc]&
11.SELECT 'Hello'
执行上述更新代码,再次执行sp_helptext时就会获得新的对象定义。
1.sp_helptext NewTestProc&
4.---------------------------------------&
5.CREATE PROCEDURE [dbo].[NewTestProc]&
7.SELECT 'Hello'
可以看到执行的更新脚本后,存储过程的名称在对象定义中也得到更新。 因此,不推荐去重命名存储过程,视图,触发器等对象。如果我想需要改名的话,把原先的删掉再重新创建。如果这个对象已经被复制了,是不允许删除重建的,否者会遇到下列错误
1.Msg 3724, Level 16, State 2, Line 1&
2.Cannot drop the procedure 'NewTestProc' because it is being used for replication.
遇到这种情况,可以采用如下两种办法
1从文章中删除该对象,创建它并将其重新添加到复制文章列表。
2 使用sp_rename重命名对象。重命名对象后,从Management Studio中生成ALTER脚本并执行它,以确保过程,触发器,函数,视图等对象的名称正确更新
1 避免重命名对象。
2 如果你想重命名对象,删除该对象,然后重新创建。
3.不要使用sp_helptext检索对象的定义和修改。
4. 只有当对象未被复制时,使用SP_RENAME重命名对象。在这种情况下,你重命名对象后,生成ALTER脚本从SSMS执行一次,以确保对象名称正确更新的对象体。}

我要回帖

更多关于 python 获取函数名 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信