当前位置: 代码迷 >> Sql Server >> SQLSERVER 执行函数解决方法
  详细解决方案

SQLSERVER 执行函数解决方法

热度:84   发布时间:2016-04-27 14:50:04.0
SQLSERVER 执行函数
从网上找了个函数
SQL code
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_convert]') and xtype in (N'FN', N'IF', N'TF'))     drop function [dbo].[f_convert]   GO         /*--全角/半角转换         转换说明     全角字符从的unicode编码从65281~65374     半角字符从的unicode编码从       33~126     空格比较特殊,全角为   12288,半角为   32     而且除空格外,全角/半角按unicode编码排序在顺序上是对应的     所以可以直接通过用+-法来处理非空格数据,对空格单独处理     like的时候,指定排序规则   COLLATE   Latin1_General_BIN     是保证字符顺序按unicode编码排序        declare   @s1   varchar(8000)     select   @s1='中    2-3456a78STUVabn中国opwxyz'     select   dbo.f_convert(@s1,0),dbo.f_convert(@s1,1)     */     Create   FUNCTION   f_Convert(         @str   NVARCHAR(4000),   --要转换的字符串         @flag   bit              --转换标志,0转换成半角,1转换成全角     )RETURNS   nvarchar(4000)     AS     BEGIN         DECLARE           @pat nvarchar(8),          @step int,          @i int,          @spc int         IF @flag=0           Select @pat=N'%[!-~]%',@step=-65248,           @str=REPLACE(@str,N' ',N'   ')         ELSE           Select @pat=N'%[!-~]%',@step=65248,           @str=REPLACE(@str,N'   ',N' ')           SET @i=PATINDEX(@pat COLLATE LATIN1_GENERAL_BIN,@str)           WHILE @i>0        Select @str=REPLACE(@str,           SUBSTRING(@str,@i,1),            NCHAR(UNICODE(SUBSTRING(@str,@i,1))[email protected]))           ,@i=PATINDEX(@pat COLLATE LATIN1_GENERAL_BIN,@str)           RETURN(@str)     END     GO  declare @s1 varchar(8000)     set @s1='中    2-3456a78STUVabn中国opwxyz'    select dbo.f_Convert(@s1,0),dbo.f_Convert(@s1,1)  


为什么在数据库里无法执行 报错信息如下:

消息 4121,级别 16,状态 1,第 3 行
找不到列 "dbo" 或用户定义的函数或聚合 "dbo.f_Convert",或者名称不明确。

双节提示信息 定位到 select dbo.f_Convert(@s1,0),dbo.f_Convert(@s1,1) 这一行

------解决方案--------------------
看下这个函数所属的架构是什么
------解决方案--------------------
沒有創建到這個函數?

檢查用戶名權限
------解决方案--------------------
dbo.f_Convert

DBO是架构名 后面的f_Convert是函数名

如果架构不是DBO 你的就错误了
------解决方案--------------------
右键安全性--登录名--属性--用户映射
------解决方案--------------------
[ad0039999].[f_Convert]
------解决方案--------------------
实在不知道就去数据库里找函数--编写函数脚本--create到新的。。。自己看看
  相关解决方案