SqlServer密码问题(原创)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/54powerman/article/details/104377

问题1、修改了系统登录密码,导致sqlserver启动失败。

是因为SqlServer服务启动时自动绑定了一个系统帐号,一般这种情况出现在administrator帐户以外的系统帐户登录系统的情况,因为默认SqlServer是不指定帐号的。

解决办法:鼠标右键单击“我的电脑”,“管理”,“服务和应用程序”,“服务”,右键单击“MSSQLSERVER”,选择“属性”,选择“本地系统帐户”或者选择“此帐户”,并输入新的密码即可。

问题2、设置了sa密码,却忘记了?怎么改呢?怎么改呢?老是忘记……唉

解决办法:用企业管理器,以系统帐户打开服务器,依次展开目录树“root/安全性”注意:不是右键单击root选择“属性”里面的安全性啊!),左键单击“登录”,右键单击“sa”选择属性,看到“密码”了吗??输入新的密码,在确认窗口再次输入新密码,确定即可。

展开阅读全文

SqlServer金额转换函数,原创

03-21

rnCREATE function dbo.Ntoc(@ChangeMoney decimal(20,2)) returns char(100)rn--小写金额转大写函数rn--参照方小庆(inrm@263.net)先生相应的delphi函数写成rn--本函数作者:fontain(fontain@163.com)rnasrnbeginrn declare @CastChinese char(100)--将返回的结果rn declare @C varchar(100)--相应位置汉字常量rn declare @S char(100)--欲转换值的字符格式值rn declare @L int--欲转换值的长度rn declare @Z bit--布尔值,0假1真rn rn declare @st char(100)--存放转换后的整数部分rn declare @st1 char(100)--存放转换后的小数部分rn rn declare @i intrn declare @j intrn declare @n intrn rn select @st=''rn select @C='零壹贰叁肆伍陆柒捌玖◇分角圆拾佰仟万拾佰仟亿拾佰仟万'rn rn select @S=LTrim(RTrim(convert(char(50),@ChangeMoney)))rn select @L=len(@S)rn select @Z=Case When @ChangeMoney<1 then 1 else 0 endrn --整数部分转换rn select @i=1rn while @i<=@L-3 beginrn select @n=cast(substring(@S,@L-@i-2,1) as int)rn select @st=Case when (@n=0) And (@Z=1 or (@i=9) or (@i=5)) then '' else substring(@C,@n+1,1) end +rn Case when (@n=0) And ((@i<>9) And(@i<>5) And (@i<>1) or (@Z=1) And (@i=1)) then '' else substring(@C,(@i+13),1) end+rn @strn select @Z=case when @n=0 then 1 else 0 endrn select @i=@i+1 rn endrn select @st=replace(@st,'亿万','亿')rn select @st=replace(@st,'零圆','圆')rn --转换完毕rn --小数部分转换rn select @n=cast(substring(@S,@L,1) as int)rn select @st1=case when @n=0 then '' rn else substring(@C,@n+1,1)+'分' rn end rn select @n=cast(substring(@S,@L-1,1) as int)rn select @st1=case when @st1='' then rn case when @n=0 then '整' rn else substring(@C,@n+1,1)+'角整' rn end rn else rn case when @n=0 then @st1 rn else substring(@C,@n+1,1)+'角'+@st1 rn end rn end rn --转换完毕rn select @CastChinese=case when @ChangeMoney=0 then '零元整' else rtrim(@st)+rtrim(@st1) endrn return @CastChinesernendrnrnrnWin2000 adv server+sql server2000 企业版调试通过 论坛

[原创]SQLServer陷阱

06-10

本文旨在指出一些在使用SQLServer过程中容易犯的错误, 希望能给您带来帮助.rn若没有特殊说明, 本文是指在MS SQLServer 2000简体中文版的默认配置环境中.rnrn一, NULL与布尔数据类型rnTransact-SQL中存在Boolean类型, if 后面的表达式的计算结果一般是Boolean类型, 但无法使用 declare 定义Boolean类型的变量.rnrnBoolean数据类型有三种取值, TRUE, FALSE, UNKNOWN, 第3种取值通常会被人忽视从而导致逻辑错误.rn默认情况下SET ANSI_NULLS为ON, 在逻辑表达式中如果你忽略了NULL的存在, 结果可能会异于你所想.rn例1: rn[code=SQL]rndeclare @a intrnif (@a > 0)rn set @a = 1rnelse if not (@a > 0)rn set @a = 2rnelsern set @a = 3rn[/code]rn结果@a的值应该是3, 因为NULL>0的值为UNKNOWN, NOT UNKNOWN的值还为UNKNOWN.rn例2:rn[code=SQL]rndeclare @a intrnif @a = nullrn set @a = 1rnelse if @a = null or 1 = 1rn set @a = 2rnelsern set @a = 3rn[/code]rn结果@a的值应该是2, 因为NULL = 0的值为UNKNOWN, UNKNOWN or TRUE的值为TRUE.rnrn二, 运行时错误与自动回滚事务rn有些人认为一个批查询在执行中发生了错误, 这个查询就会中止, 其实是错误的.rnrn例1:rn[code=SQL]rndeclare @i intrnset @i = 1 / 0rnset @i = 1rnselect @irn[/code]rn结果会先报一个rn服务器: 消息 8134,级别 16,状态 1,行 2rn遇到被零除错误。rn然后输出结果集 1.rnrn例2:rn[code=SQL]rnset xact_abort onrndeclare @i intrnset @i = 1 / 0rnset @i = 1rnselect @irn[/code]rn结果只报错, 不会输出结果.rnrn例3:rn请在查询分析器中新建连接执行rn[code=SQL]rncreate table table1(id int primary key)rnrnbegin tranrninsert into table1 values (1)rninsert into table1 values (1)rninsert into table1 values (2)rncommit tranrn[/code]rn第二个insert会产生违反主键约束错误, 但是执行结束后你会发现事务已经提交并且table1中已经有两行记录1与2rnrn例4:rn[code=SQL]rnset xact_abort onrnrncreate table table2(id int primary key)rnrnbegin tranrninsert into table2 values (1)rninsert into table2 values (1)rninsert into table2 values (2)rncommit tranrn[/code]rn执行结束后, table2中没有记录, 说明事务已经回滚.rnrn当 SET XACT_ABORT 为 ON 时,如果 Transact-SQL 语句产生运行时错误,整个事务将终止并回滚。为 OFF 时,只回滚产生错误的 Transact-SQL 语句,而事务将继续进行处理。编译错误rnrn(如语法错误)不受 SET XACT_ABORT 的影响。rn一般批查询中 SET XACT_ABORT 默认为 OFF, 隐式开启的事务如触发器中SET XACT_ABORT 默认为ONrnrn未完... 论坛

密码验证程序[原创]

05-18

呵呵,为了在对硬件操作方面的练手写的一个密码验证的程序 rn编译环境:TURBO C 2.0 rn可以实现的功能: rn对密码进行三次验证,3次以内不符合绿灯报警,3次后红灯报警,键盘死锁; rn涉及的方面: rn1。TC对键盘扫描码的获得; rn2。TC对屏幕的填充象素; rn3。TC对扬声器的操作; rn希望大家对这个程序对提意见哦; rnrn#include "conio.h" rn#include "stdio.h" rn#include "dos.h" rn#include "string.h" rn#define ENTER 13 rn#define DEL 8 rn#include "graphics.h" rnunsigned freq[ 1]=300; rnint dely[2]=50,80; rn/*****利用中断0X10置视频模式, MODE=3为文本模式,MODE=18为图形模式;*****/ rnvideo_mode(int mode) rn rn union REGS r; rn r.h.ah = 0; rn r.h.al = mode; rn int86(0x10,&r,&r); rn rn/**********对规定的坐标进行象素填充**********/ rnvideo_write(int x, int y, int color) rn rn union REGS r; rn r.h.ah = 12; /* 功能号12 */ rn r.h.al = color; rn r.h.bh = 0; rn r.x.cx = x; rn r.x.dx = y; rn int86(0x10, &r, &r); rnrn rn/*********矩形图案的画法***************/ rnvideo_win(int xa,int ya,int xb,int yb,int color) /* 调用2个坐标,一个是开始坐标,另一个是终点坐标 */ rn rn union REGS r; rn r.h.ah = 6; /* 矩形画功能号6,为文本模式 */ rn r.h.al = 0; rn r.h.ch = ya; rn r.h.cl = xa; rn r.h.dh = yb; rn r.h.dl = xb; rn r.h.bh = color; rn int86(0x10,&r,&r); rn rn/********规定警告字样的函数(3次错误以后)*********/ rntext_warning() rn rn textmode(BW40); /* 置字体 */ rn gotoxy_mode(15,10); /* 光标定位 */ rn printf("WARNING!"); rn gotoxy_mode(12,12); rn printf("TRESPASS UPON!"); rn cursor_hide(); /*光标隐藏*/ rn rn/********规定警告字样的函数(3次以内)*****/ rntext_incorrect() rn rn textmode(BW40); rn gotoxy_mode(15,10); rn printf("Incorrect!"); rn cursor_hide(); rn rn/******光标定位函数**********/ rngotoxy_mode(int x,int y) rn rn union REGS r; rn r.h.ah = 2; rn r.h.dh = y; rn r.h.dl = x; rn r.h.bh = 0; rn int86(0x10,&r,&r); rn rn/*********鼠标隐藏函数********/ rncursor_hide() rn rn union REGS r; rn r.h.ah = 1; rn r.x.cx = 0x0100; rn int86(0x10,&r,&r); rn rn char wel[ 30] = "Welcome To Use My Computer"; rn char enter[ 30]="Press Any Key To Enter"; rn char right[ 40]="Copyright (c) 2001-2002 By Leon"; rn/**********获得键盘扫描码函数,也可用 bioskey()*******/ rnGet_key() rn rn int key; rn key = getch(); rn if(key == 0) /*判断如果ACSII码为00*/ rn key = getch() + 256; /*得到扩展码*/ rn return(key); rn rn/********模拟打字机的效果**************/ rndelay_fun() rn rn int i; rn void music(); rn for(i=0;;i++) rn rn if(wel[ i ] != '\0') rn rn delay(1000); rn textmode(BW80); rn textcolor(YELLOW); rn gotoxy_mode(22+i,8); rn cprintf("%c",wel[ i ]); rn music(1,60); rn rn else rn break; rn rn delay(500000); rn for(i=0; ; i++) rn rn if(enter[ i ] != '\0') rn rn delay(1000); rn textmode(BW80); rn textcolor(YELLOW); rn gotoxy_mode(24+i,11); rn cprintf("%c",enter[ i ]); rn music(1,60); rn rn else rn break; rn rn delay(40000); rn for(i=0;;i++) rn rn if(right[ i ] != '\0') rn rn delay(1000); rn textmode(BW80); rn textcolor(YELLOW); rn gotoxy_mode(21+i,14); rn cprintf("%c",right[ i ]); rn music(1,60); rn rn else rn break; rn rn getch(); rn rn/************登陆后的效果**************/ rnlogined() rn rn int i; rn textmode(BW80); rn gotoxy_mode(14,10); rn textcolor(YELLOW); rn cprintf("Windows98 is loading now"); rn gotoxy_mode(35,12); rn cprintf("Waiting......"); rn for(i=0;i<=100;i++) rn rn gotoxy_mode(49,12); rn delay(1000); rn cprintf("%d%",i); rn gotoxy_mode(0+i,12); rn cprintf("\n>"); rn rn gotoxy_mode(14,14); rn cprintf("Windows has been loaded complished"); rnrn getch(); rn rn/*************对PC扬声器操作的函数************/ rnvoid music(int loop,int frequeney) /* frequeney为频率*/ rn rnrn unsigned int ON = 0, OFF = 1; rn int i; rn union rn rn int drive; rn unsigned char c[ 2]; rn F; rn for(i=0;i=4) rn warning_mode(); rn rn rn clrscr(); rn rn/***********警告函数,(3次以内)***********/ rnincorrect_mode() rn rn int xa = 13, ya = 9, xb = 26, yb = 11; rn int i=0,j; rn int color[ 2]=0xbf,0x0f; rn video_mode(3); rn do rn rn for(j=0;j<2;j++) rn rn video_win(xa,ya,xb,yb,color[ j]); rn text_incorrect(); rn music(1,1000); rn delay(15000); rn i++; rn rn rn while(i<=2); rn rn/**********重启函数(尚在测试阶段)***********/ rnreboot_machine() /*感谢GUOGUO提供冲启方法*/ rn rn union REGS r; rn int86(0x19,&r,&r); rn rn/***********警告函数(3次以后)***********/ rnwarning_mode() rn rn int xa = 10, ya = 9, xb = 30, yb = 14; rn int i,j; rn int color[ 2]=0xcf,0x0f; rn video_mode(3); rn for(i=0;;i++) rn rn for(j=0;j<2;j++) rn rn video_win(xa,ya,xb,yb,color[ j]); rn text_warning(); rn music(1,1000); rn delay(15000); rn rn if(i == 4) rn reboot_machine(); rn rnZ 论坛

***原创*** oracle数据库转换到Sqlserver的几点经验

08-09

应广大朋友的要求,本人将《PB-ORACLE通用开发框架2.1》版本的程序rn成功转换到SQLServer下,下面是我总结的几条经验,与大家分享,有不rn正确的地方,请批评指正。谢谢!kingfriend1111@163.comrnrn1.数据类型的转换 建立两个数据源basedb, basdb_sqlrn 为每个表,建立一个数据管道,修改部分字段类型 rn Oracle SQLServerrn varchar2 varcharrn rn blob imagern2.函数的转换 rnrn ORACLE SQLServerrn to_char(readingdate,’yyyymm’) convert(char(6),readingdate,111)rn to_char(readingdate,’yyyy/mm’) convert(char(7),readingdate,112)rn decode( , , , ,) case when then end 或者 isnull(x,0)rn 左右连接 (+) left outer join rn nvl(field1,'') isnull(field1,'')rn 举例子如下:rnoracle:rn SELECT EFMFID, rn EFMMID, rn EFMNAME, rn EFMMETHOD, rn EFMUPPICT, rn EFMDNPICT, rn EFMCHECK, rn EFMVISIBLE, rn EFMHINT, rn EFMMICOHELP, rn EFMTBITEMINDEX, rn EFMTBITEMORDER, rn EFMTBITEMSPACE,rn DECODE(ORFMRID,NULL,'N','Y') FLAGrn FROM ERPFUNCMETHOD, rn (SELECT ORFMRID,ORFMFID,ORFMETHODrn FROM OPERRFMETHOD WHERE ORFMRID=:v_role)rn WHERE EFMFID=ORFMFID(+) AND EFMMID=ORFMETHOD(+) AND EFMFID=:v_funcrn ORDER BY EFMTBITEMORDERrn-----------------------------------rnsqlserver:rnSELECT A.EFMFID, rn A.EFMMID, rn A.EFMNAME, rn A.EFMMETHOD, rn A.EFMUPPICT, rn A.EFMDNPICT, rn A.EFMCHECK, rn A.EFMVISIBLE, rn A.EFMHINT, rn A.EFMMICOHELP, rn A.EFMTBITEMINDEX, rn A.EFMTBITEMORDER, rn A.EFMTBITEMSPACE,rn case IsNUll(B.ORFMRID,'*')rn when '*' then 'N'rn else 'Y'rn end FLAGrn FROM ERPFUNCMETHOD AS A rn LEFT OUTER JOIN rn (SELECT ORFMRID,ORFMFID,ORFMETHODrn FROM OPERRFMETHOD WHERE ORFMRID = :v_role ) AS BrnON A.EFMFID=B.ORFMFID AND A.EFMMID=B.ORFMETHOD rn WHERE A.EFMFID = :v_funcrn ORDER BY A.EFMTBITEMORDER;rn3. 数据窗口中的语法rn 在测试的过程会发现有一些数据窗口在 SqlServer不能用:修改方法是将字段的引号去掉rn4. 取服务器时间rnORACEL rn-------------------------------------------rndatetime ld_todayrndeclare cur cursor for select getdate();rnopen cur;rnfetch cur into :ld_today;rnclose cur;rnIF SQLCA.SQLCODE 0 THENrnMESSAGEBOX('错误信息', SQLCA.SQLERRTEXT)rnEND IFrnreturn ld_todayrn5.函数的转换rn 尽量不要使用select count(*),而由EXISTS 来代替rnORACEL rn-------------------------------------------rnCREATE OR REPLACE FUNCTION fChkRoleFuncrn (Vrole IN VARCHAR2,vcode IN VARCHAR2)rn Return IntegerrnASrn lpcode Integer;rnBEGINrn SELECT COUNT(*) INTO lpcode FROM operrolefuncrnWHERE orfrid=vrole AND orffid = vcode;rn Return lpcode;rnEXCEPTION WHEN OTHERS THENrn lpcode := 0;rn Return lpcode;rnEND;rnrnSQLSERVER:rn---------------------------------------------rnCREATE FUNCTION fChkRoleFuncrn (@Vrole VARCHAR(2), @vcode VARCHAR(10))rnReturns IntrnASrnBEGINrn DECLARE @lpcode IntrnIF EXISTS( SELECT * FROM operrolefunc WHERE orfrid=@vrole AND orffid = @vcode) rn set @lpcode = 1rnelsern set @lpcode = 0rn RETURN (@lpcode)rnENDrn 论坛

XP下安装SQLSERVER企业版的一个新方法(原创

03-14

近日,因为参与一个项目开发,该项目要求只能用正版软件。在开发阶段,我们采用了windows xp和sql server 2000 eval 英文版。rnrnwindows xp pro (中和英文)均为正版,sqlserver2000 英文评估版,微软站点下载rnrn经过一段摸索和测试,将sqlserver2000 英文企业版安装成功rnrn首先,我对目前安装sqlserver2000企业版的最为流行的2个方案,做个总结rnrn1。ntswitch软件修改xp为.net server系统,这种方法对系统修改太多,有一定风险,切换之后,系统出现了异常,更遑论安装sqlserverrnrn2.先安装sqlserver enterprise 的msde,再安装客户端工具,个人感觉是在偷换概念,msde在各个sqlserver版本中完全一样,其实就是桌面版的sqlserver,给98用的,根本没有企业版应有的内在。安装这个没有意义,而且安装只能默认的安装到系统分区。不可以自定义安装。rnrn接下来,讨论一下xp可安装的sqlserver 版本,eval和个人版,其他版本安装提示,非server系统不可以安装。rnrn但是eval版本是120天试用版本,之后服务就中止。除非更改时间或者重新安装。rnrn再接下来我们想一下,解决问题的思路,检查了个版本sqlserver中的目录结构和分布,主要文件大致一样。也就是说,我只要让安装文件在检查系统的时候跳过检查系统的版本,就应该可以安装。那么检查系统版本的sqlserver安装文件,是哪一个呢。trace一下,在这里rnrnsqlserver安装包的根目录\x86\binn\setupex.dllrnrn删除或者更改文件名,从新安装提示缺少文件的错误,但是版本拒绝没有了rnrn那么既然只有这一个文件有问题。我可以用评估版本和个人版本的setupex.dll,去替换该文件,是否可以。rnrncome on 想到就做,成功了,我运行sqlserver enterprise的安装文件,没有任何提示,就进入到正常安装向导。不过有一个缺憾,因为我用的是eval,在安装向导的窗口的标题显示eval enterprise,抱着怀疑,我以自定义的方式安装好了sqlserver,我用sqlserver 的select @@version检查版本,显示sqlserver eval enterprise,有点失望,以为还是评估版本的。rnrn如何测试呢,很简单,我们把时间改到了,120天以后,甚至10年以后,重新启动计算机,发现sqlserver的服务依然正常启动,看来是没有问题了,如果是eval版本,那么sqlserver在更改系统时间120天之后,服务就会启动失败,在事件日志里提示已经过期。rnrn总结一下,我们只替换了sqlserver 2000 enterprise的一个文件,其他文件都保持不变的情况下,达到了目的,从风险和操作上来讲用了最小的代价,虽然在版本的显示提示还是eval(如果用个人版不知道是否会显示personal)。但从实际使用角度来说,我们已经享受到企业版的安装文件和设置。rnrn我在网络上去搜索解决问题的办法的时候,没有找到这种方式。或许已经有人用过此方法,而我没找到而已。rnrn把经验分享,希望大家能找到更晚完美的解决方案。因为我只有eval版本,个人版我没测试,有条件的朋友可以测试一下rnrn测试环境rnwindows xp pro 正版(中文,英文),rnsqlserver2000 eval 英文版本(可从微软网站下载)其实只要一个文件即可setupex.dll,rnsqlserver 2000 企业版英文版完全安装文件 论坛

[原创]Oracle数据库转换到SqlServer的几点经验

08-09

应广大朋友的要求,本人将《PB-ORACLE通用开发框架2.1》版本的程序rn成功转换到SQLServer下,下面是我总结的几条经验,与大家分享,有不rn正确的地方,请批评指正。谢谢!kingfriend1111@163.comrnrn1.数据类型的转换 建立两个数据源basedb, basdb_sqlrn 为每个表,建立一个数据管道,修改部分字段类型 rn Oracle SQLServerrn varchar2 varcharrn rn blob imagern2.函数的转换 rnrn ORACLE SQLServerrn to_char(readingdate,’yyyymm’) convert(char(6),readingdate,111)rn to_char(readingdate,’yyyy/mm’) convert(char(7),readingdate,112)rn decode( , , , ,) case when then end 或者 isnull(x,0)rn 左右连接 (+) left outer join rn nvl(field1,'') isnull(field1,'')rn 举例子如下:rnoracle:rn SELECT EFMFID, rn EFMMID, rn EFMNAME, rn EFMMETHOD, rn EFMUPPICT, rn EFMDNPICT, rn EFMCHECK, rn EFMVISIBLE, rn EFMHINT, rn EFMMICOHELP, rn EFMTBITEMINDEX, rn EFMTBITEMORDER, rn EFMTBITEMSPACE,rn DECODE(ORFMRID,NULL,'N','Y') FLAGrn FROM ERPFUNCMETHOD, rn (SELECT ORFMRID,ORFMFID,ORFMETHODrn FROM OPERRFMETHOD WHERE ORFMRID=:v_role)rn WHERE EFMFID=ORFMFID(+) AND EFMMID=ORFMETHOD(+) AND EFMFID=:v_funcrn ORDER BY EFMTBITEMORDERrn-----------------------------------rnsqlserver:rnSELECT A.EFMFID, rn A.EFMMID, rn A.EFMNAME, rn A.EFMMETHOD, rn A.EFMUPPICT, rn A.EFMDNPICT, rn A.EFMCHECK, rn A.EFMVISIBLE, rn A.EFMHINT, rn A.EFMMICOHELP, rn A.EFMTBITEMINDEX, rn A.EFMTBITEMORDER, rn A.EFMTBITEMSPACE,rn case IsNUll(B.ORFMRID,'*')rn when '*' then 'N'rn else 'Y'rn end FLAGrn FROM ERPFUNCMETHOD AS A rn LEFT OUTER JOIN rn (SELECT ORFMRID,ORFMFID,ORFMETHODrn FROM OPERRFMETHOD WHERE ORFMRID = :v_role ) AS BrnON A.EFMFID=B.ORFMFID AND A.EFMMID=B.ORFMETHOD rn WHERE A.EFMFID = :v_funcrn ORDER BY A.EFMTBITEMORDER;rn3. 数据窗口中的语法rn 在测试的过程会发现有一些数据窗口在 SqlServer不能用:修改方法是将字段的引号去掉rn4. 取服务器时间rnORACEL rn-------------------------------------------rndatetime ld_todayrndeclare cur cursor for select getdate();rnopen cur;rnfetch cur into :ld_today;rnclose cur;rnIF SQLCA.SQLCODE 0 THENrnMESSAGEBOX('错误信息', SQLCA.SQLERRTEXT)rnEND IFrnreturn ld_todayrn5.函数的转换rn 尽量不要使用select count(*),而由EXISTS 来代替rnORACEL rn-------------------------------------------rnCREATE OR REPLACE FUNCTION fChkRoleFuncrn (Vrole IN VARCHAR2,vcode IN VARCHAR2)rn Return IntegerrnASrn lpcode Integer;rnBEGINrn SELECT COUNT(*) INTO lpcode FROM operrolefuncrnWHERE orfrid=vrole AND orffid = vcode;rn Return lpcode;rnEXCEPTION WHEN OTHERS THENrn lpcode := 0;rn Return lpcode;rnEND;rnrnSQLSERVER:rn---------------------------------------------rnCREATE FUNCTION fChkRoleFuncrn (@Vrole VARCHAR(2), @vcode VARCHAR(10))rnReturns IntrnASrnBEGINrn DECLARE @lpcode IntrnIF EXISTS( SELECT * FROM operrolefunc WHERE orfrid=@vrole AND orffid = @vcode) rn set @lpcode = 1rnelsern set @lpcode = 0rn RETURN (@lpcode)rnENDrn 论坛

没有更多推荐了,返回首页