这么多的高手竟然不能回答这个问题??
这个问题问了好几天,这里的个大高手了看过了,也有说话的,但是却最终都没解决,然后就从此不出现了!
我只还在发一次贴子,原贴:http://expert.csdn.net/Expert/topic/2090/2090037.xml?temp=.5734674
create FUNCTION dbo.GetText(
@table_name varchar(100) ,
@fieldname varchar(50) ,
@tpwhere varchar(500))
RETURNS varchar(8000) AS
BEGIN
declare @yzh varchar(8000)
return @yzh
END
代码一定没有错,同一个sqlserver服务器,其中有两个数据库,一个k1,一个为k2
在k1中执行上面的代码建立 GetText 函数是正常的。但是在k2中却不行。
给出提示:
服务器: 消息 170,级别 15,状态 1,行 3
Line 3: Incorrect syntax near 'FUNCTION'.
服务器: 消息 178,级别 15,状态 1,行 11
A RETURN statement with a return value cannot be used in this context.
开始仔细检查代码,发现不可能是代码问题,后来发现在 k2 库中不能建立任何函数,错误提示均上上面所述!用分析器也好,直接建立也好,都不行!
请问哪个大狭知道这中情况是怎么回事情?为什么 k1 是好的,k2 却不行?
问题点数:100、回复次数:15Top
1 楼ldy(罗大佑)回复于 2003-08-03 09:15:51 得分 0
各大高手都看过了,听课先Top
2 楼CSDNM(决定不当CSDN经理了)回复于 2003-08-03 09:49:03 得分 0
SQL SERVER什么版本?
是不是K1是2000,K2是6.5或者7.0?
2000以下版本的SQL SERVER不支持FUNCTION
Top
3 楼pengdali()回复于 2003-08-03 11:04:54 得分 5
try sp3
http://www.microsoft.com/china/sql/downloads/sp3.aspTop
4 楼vchoushen6(vc火神6号)回复于 2003-08-03 13:12:38 得分 0
不知道你的具体情况是什么,俺专门在SQLSERVER2K中试了一下(两个数据库中),没任何问题,很正常啊Top
5 楼qianguob(不懂编程)回复于 2003-08-03 13:33:10 得分 0
对啊,看一下两个数据的设置。Top
6 楼caiyunxia(夏才云)回复于 2003-08-03 13:33:19 得分 0
版本一样吗Top
7 楼CrazyFor(冬眠的鼹鼠)回复于 2003-08-03 13:53:57 得分 5
是不是因为你的K2的用户已经改掉了,不是dbo了。
TRY:
create FUNCTION GetText(
@table_name varchar(100) ,
@fieldname varchar(50) ,
@tpwhere varchar(500))
RETURNS varchar(8000) AS
BEGIN
declare @yzh varchar(8000)
return @yzh
ENDTop
8 楼yzhlinux(依乐)回复于 2003-08-03 19:29:25 得分 0
to CSDNM(决定不当CSDN经理了) “2000以下版本的SQL SERVER不支持FUNCTION” 我k1 都建立了函数了你说支持不支持呢?
to vchoushen6(vc火神6号) “俺专门在SQLSERVER2K中试了一下(两个数据库中),没任何问题,很正常” 你的话代表什么意思?代表没有问题还是有问题? 我就没有试验?
to qianguob(qianguob) 你在说什么?
to caiyunxia(monkey) “版本一样吗”你是只什么版本一样不一样??没有理解什么意思?我就一个数据库服务器,2000的,里面有很多数据库除了k2 的 function其他一切正常,我管理sql的经验水平还不是很差,所以不要问这些儿戏一定东西。
to CrazyFor(太阳下山明朝依旧爬上来) dbo 还在那里,应该是好的吧。如何判断他不正常呢?改是没有改变的啊,看不出来啊!Top
9 楼pengdali()回复于 2003-08-03 19:32:45 得分 0
你的用户都是用sa登陆建立的吗?Top
10 楼pengdali()回复于 2003-08-03 19:33:08 得分 0
写错
你的function都是用sa登陆建立的吗?Top
11 楼qianguob(不懂编程)回复于 2003-08-03 20:43:53 得分 2
我是说你检查一下两个数据库的设置是否一样?
例如用户的登陆啊.....?Top
12 楼yzhlinux(依乐)回复于 2003-08-04 08:03:39 得分 0
to 大力 是的,这个我已经万分注意了,话说回来,为了方便,由于这些库内部使用,我只有sa 一个帐号!Top
13 楼yzhlinux(依乐)回复于 2003-08-04 08:14:46 得分 0
问题奇怪得连检查sql语法都通不过,我把数据库给大家,又兴趣的可以拿回去研究看看(注:数据库种的表和视图已经全部被删除,原来表和视图个数是:有87个表,42个视图)
地址:
再次提供:
http://yzhlinux.vicp.net:88/guest/test.rar
如果认为我的什么权限问题啊,什么设置问题啊的人请都下载测试吧,我实在找了很久没有找到又什么不同了。Top
14 楼CSDNM(决定不当CSDN经理了)回复于 2003-08-04 08:16:54 得分 88
楼主:
企业管理器--〉k2-->右键--〉属性--〉选项--〉把兼容性级别,改为"数据库兼容级别80"--〉确定,OK?
Top
15 楼yzhlinux(依乐)回复于 2003-08-04 08:31:30 得分 0
终于发现了问题了,现在总结一下,的确是兼容级别的问题,这个错误迟迟不能发现原因有下:
1。属性中对比得不够仔细,如果逐项比较过去,那么应该可以发现的。
2。对7。0级别的东西不够熟悉,我本人没有管理过7。0以前的东西,如果熟悉的话,那么Line 3: Incorrect syntax near 'FUNCTION'. 从这个被提示为“语法错误”的错误提示里就应该可以发现是兼容级别太早了。
3。我们太肤浅
大家的帮助力量总的大,再次感谢大家,从发现中我可以看出谁是热心,谁在用心,很感谢你们。
Top




