存储过程写法(mysql存储过程写法)

  • 时间:
  • 浏览:7
最佳回答

很多各位看官在搜求关于存储过程写法的解答,今天花编为大家聚合10条解答来给大家细心解答! 有98%菜鸟玩家认为存储过程写法(mysql存储过程写法)值得一读!

10条解答

存储过程写法


一.存储过程怎么写啊

1.//创建存储过程CREATEPROCEDUREuserData(INidINT)BEGINSELECT*fromuserdataWHEREuserflag=id;END;其中IN是传进去的变量;dropprocedureuserData;//销毁这个存储过程。

2.calluserData(2)//调用存储过程。扩展资料:sql中的存储过程及相关介绍:CREATEPROCEDURE存储过程名AS程序行其中存储过程名不能超过128个字。

3.每个存储过程中最多设定1024个参数(SQLServer0以上版本),参数的使用方法如下:@参数名数据类型。

4.每个参数名前要有一个“@”符号,每一个存储过程的参数仅为该程序内部使用,参数的类型除了IMAGE外,其他SQLServer所支持的数据类型都可使用。

5.相当于我们在建立数据库时设定一个字段的默认值,这里是为这个参数设定默认值。是用来指定该参数是既有输入又有输出值的,也就是在调用了这个存储过程时,如果所指定的参数值是我们需要输入的参数。

6.同时也需要在结果中输出的,则该项必须为OUTPUT,而如果只是做输出参数用,可以用CURSOR,同时在使用该参数时,必须指定VARYING和OUTPUT这两个语句。

参考资料来源:-储存过程

二.请教一个存储过程的写法

1.创建存储过程createprocdurcechunchuguocheng@ls_ysmoney数据类型,@ls_deptid数据类型,@ls_ysnd数据类型,@ls_dateend数据类型,@ls_datestart数据类型,@ls_sum数据类型output--前面为定义输入参数的类型ASBEGINSELECT@ls_sum=sum(yszcmx。

2.money)INTO:@ls_ysmoneyFROMyszcmxWHERE(yszcmx。deptid=:@ls_deptid)AND(yszcmx。xmid=:@ls_xmid)AND(yszcmx。nd=:@ls_ysnd)AND(yszcmx。shzt'2')AND(yszcmx。xzzt'2')AND(yszcmx。zctimebetween:@ls_datestartand:@ls_dateend);ifsqlca。

3.sqlcode0orisnull(@ls_ysmoney)=truethen@ls_ysmoney=0;return1--if语句里返回1endifreturn0--正常终了返回0END这个存储过程是把最后求出的sum利用变量输出

三.怎么写存储过程

1.存储过程的格式如下:CREATEPROCEDUREproc_name(/*parameters,。*/)/*RESULT(column-name,。)*/BEGIN;END其中creator是用户名,比如dba;proc_name是你自己起的过程名;后面的参数可有可无,视自己情况定,如果有格式如(ainteger,bchar(50));再下面的RESULT应该是返回值,这个没用过不知道怎么回事!

2.内容。

3.把这些都写好了可能是这样:CREATEPROCEDUREdba。myProcedure(@ainteger,@bchar(50))BEGIN;END但是这样子还是不能编译的,因为整个过程体是空的,而我学习的结果是过程中至少要有一个SQL语句。

4.所以要这样写才不会出错:CREATEPROCEDUREdba。myProcedure(ainteger,bchar(50))BEGINSELECT*FROMMyTableEND语法。

5.在写的过程中最郁闷的问题是分号!

6.最后发现好像是这样:每一句都要加分号,不管是SQl语句还是其它的什么语句,但是最后保存后最后一句的分号会被自动删除!

7.我用的是Sybase的SybaseCentral。

8.格式为Declare@varNameinteger;(注意有分号!

9.)“@”号好像可有可无!SELECT语句。

10.格式为:SELECTCount(*)INTO@varNameFROMMyTableWHEREid=@a;if语句。

11.格式为:if(varName0)thenreturnendif;(注意还有分号!

12.)循环语句。格式为:loop……endloop;(注意分号!)设置变量值。格式为:set@varName=10;set@varName=@varName2;字符串。DeclaremyStringchar(50);set@myString='Hello!

13.定义游标。

14.格式为:declareMyCursordynamicscrollcursorforselect……from……where……;打开、使用和关闭游标。

15.OpenMyCursor;fetchnextMyCursorinto……;CloseMyCursor;调用方法。

16.stringls_name=testDECLAREProcName1PROCEDUREFORProcName2@wg_wellid=2,@wg_wgid=1,@wg_stringsid=1,@bha_wellid=2,@bha_name=:ls_name;executeProcName1;closeProcName1;其中ProcName1是调用程序中自定义的过程名,ProcName2是数据库中存储过程的名字,下面的传入的参数。

四.SQLServer的存储过程怎么写?

1.SQLserver中如何存储:首先准备数据,测试存储过程usessqadm;创建测试books表createtablebooks_test(book_idintidentity(1,1)primarykey,book_namevarchar(20),book_pricefloat,book_authvarchar(10));插入测试数据insertintobooks_test(book_name,book_price,book_auth)values('论语',26,'孔子'),('天龙八部',26,'金庸'),('雪山飞狐',37,'金庸'),('平凡的世界',38,'路遥'),('史记',58,'司马迁');select*frombooks_test;*/创建无参存储过程if(exists(select*fromsys。

2.objectswherename='getAllBooks'))dropprocgetAllBooksgocreateproceduregetAllBooksasbeginselect*frombooks_test;调用,执行存储过程execgetAllBooks;endgo修改存储过程alterproceduregetallbooksasselectbook_namefrombooks_test;修改存储过程的名称sp_renamegetallbooks,proc_get_allbooks;goexecproc_get_allbooks;go创建带参数的存储过程usessqadmgoif(exists(select*fromsys。

3.objectswherename='searchbooks'))dropprocsearchbooksexecsearchbooks执行存储searchbooks得到如下结果:gocreateproceduresearchbooks(@bookidint)--括号里面是asbegindeclare@book_idint;定义一个标量变量,只是保证存储过程的完整性,在本存储是多此一举的。

4.set@book_id=@bookid;select*frombooks_testwherebook_id=@book_id;end;go--execsearchbooks执行存储searchbooks得到如下结果:创建带两个参数的存储过程usessqadmgoif(exists(select*fromsys。

5.objectswherename='book_test2'))dropprocbook_test2execbook_test2执行存储book_test2得到如下结果:gocreateprocedurebook_test2(@bookidint,@booknamevarchar(20))括号里面是asbegindeclare@book_idint;定义一个标量变量,只是保证存储过程的完整性,在本存储是多此一举的。

6.declare@book_namevarchar(20);set@book_id=@bookid;set@book_name=@bookname;select*frombooks_testwherebook_id=@book_idandbook_name=@book_name;end;goexecbook_test2扩展资料:SQLServer中查询存储命令子句:USEUse是跳转到哪个数据库,对这个数据库进行操作。

7.GOGO向SQLServer实用工具发出一批Transact-SQL语句结束的信号,相当于提交上面的SQL语句。

8.GO是把t-sql语句分批次执行一步成功了才会执行下一步,即一步一个GO/******Object:StoredProcedure。

9.ScriptDate:07/30/201813:44:55******/SETANSI_NULLSONGOSETQUOTED_IDENTIFIERON

五.求几个SQL语句和存储过程写法

1.查询表A中是存在列名为id的列1234IFCOL_LENGTH('A','id')ISNOTNULLPRINTN'存在'ELSEPRINTN'不存在'当前连接的数据库中是否存在表名为A的表1234IFobject_id(N'A',N'U')ISNOTNULLPRINTN'存在'ELSEPRINTN'不存在'你要用存储过程,直接在外层代码加个套就OK了。

2.比如判断列的:1234567CREATEPROCSP_NAMEBEGINIFCOL_LENGTH('A','id')ISNOTNULLPRINTN'存在'ELSEPRINTN'不存在'END

六.完整存储过程怎么写,从表创建开始

1.SqlCommandcmd=NewSqlCommand(CREATETABLEdormitoy(IDintprimarykey,numberint),newSqlConnection(connectionstring));try{cmd。

2.Connection。Open();cmd。ExecuteNonQuery();}catch(Exceptionex){}finally{cmd。

3.Close()}哪会在触发器里创建表的。触发器在每次insert之后都触发,每次都创建student表吗?

表创建一次就可以了。另外,学生的学号和姓名从哪里来?通常像创建表、视图等之类的DDL语句都在数据库中一次性创建好。不需要通过应用程序创建。应用程序通常都是执行Select,update,insert,delete之类的DML语句。

七.关于一个存储过程的写法

1.createprocedurep_sel@hhvarchar(20),@NYvarchar(20),@BCSLintoutputasselect@BCSL=BCSLfromdbo。

CJSwhereHH=@hhandNY=@NY

八.sql存储过程写法

select*fromtablewhereid=@idor@idisnull

九.ORACLE存储过程的写法。

1.oracle存储过程的基本语法基本结构CREATEORREPLACEPROCEDURE存储过程名字(参数1INNUMBER,参数2INNUMBER)IS变量1INTEGER:=0;变量2DATE;BEGINEND存储过程名字SELECTINTOSTATEMENT将select查询的结果存入到变量中,可以同时将多个列存储多个变量中,必须有一条记录,否则抛出异常(如果没有记录抛出NO_DATA_FOUND)例子:BEGINSELECTcol1,col2into变量1,变量2FROMtypestructwherexxx;EXCEPTIONWHENNO_DATA_FOUNDTHENxxxx;END;。

2.IF判断IFV_TEST=1THENBEGINdosomethingEND;ENDIF;while循环WHILEV_TEST=1LOOPBEGINXXXXEND;ENDLOOP;变量赋值V_TEST:=123;用forin使用cursor。

3.ISCURSORcurISSELECT*FROMxxx;BEGINFORcur_resultincurLOOPBEGINV_SUM:=cur_result。

4.列名1 cur_result。列名2END;ENDLOOP;END;带参数的cursorCURSORC_USER(C_IDNUMBER)ISSELECTNAMEFROMUSERWHERETYPEID=C_ID;OPENC_USER(变量值);LOOPFETCHC_USERINTOV_NAME;EXITFETCHC_USER NOTFOUND;dosomethingENDLOOP;CLOSEC_USER;用pl/sqldeveloperdebug连接数据库后建立一个TestWINDOW在窗口输入调用SP的代码,F9开始debug,CTRL N单步调试蓝屏

十.存储过程怎么写

1.比如ifexists(selectnamefromsysobjectswherename='proc_ManagerLogin')begindropprocedureproc_ManagerLoginendgocreateprocedureproc_ManagerLogin@returnbitoutput,@usernamevarchar(59),@passwordvarchar(32)asbeginifexists(select*fromsystemManagerwhereadminName=@usernameandadminpass=@password)beginset@return=1--在系统日志中记录execproc_SystemLog_add'管理员登陆','进入了后台'endelsebeginset@return=0endendgo

网友评论

网友名字

你还没有评论

感谢你的评论

可输入200个字