存储过程分号
存储过程分为四类;系统存储过程、用户定义存储过程、临时存储过程(以“#”或“##”为前缀)、扩展存储过程。
常用的系统存储过程的使用:
(1)sp_helpdb
用于查看数据库名称和大小。
(2)sp_helptext
用于显示规则、默认值、未加密的存储过程、用户定义函数、触发器或视图的文本。
(3)sp_renamedb
用于重命名数据库。
(4)sp_rename
用于更改当前数据库中用户创建对象(如表、列或用户定义数据类型)的名称。
(5)sp_helplogins
查看所有数据库用户登录信息。
(6)sp_helpsrvrolemember
用于以查看所有数据库用户所属的角色信息。
就列这些常用的了,其他你自己慢慢找资料看看。
② sql server 存储过程insert需不需要分号
sql server 存储过程 数据不能完整插入 sql...要求用户输入两段用分号分隔的字符串,如'01;02;03...(';',@str_xm)-1); insert into student ...
③ mysql 存储过程
1. exec 存储过程名
2. exec 存储过程名 参数1,参数2,参数3......
或者exec 存储过程名 参数1='',参数2='',参数3=''......
④ mysql存储过程,触发器end后要跟分号吗
mysql存储过程,触发器end后需要加分号,否则会提示错误。
因为这些也是sql语句,mysql规定sql语句必须以分号结尾。
⑤ mysql 建立存储过程要写delimiter,后面的$是什么意思
delimiter就是告诉mysql解释器,该段命令是否已经结束了,是否可以执行了。
默认情况下,delimiter是分号;,遇到分号就执行。
后面的双美元符号 就是告诉mysql,遇到双美元符号再执行
⑥ MySQL中创建多条执行语句的存储过程或触发器时,为何总是遇到分号就结束创建,然后报错如何解决
摘要 mysql的命令行执行每一条命令是以分号结尾的,也就是说识别是否为一条命令,是根据分号决定的。然而存储过程中设计多条语句,很可能出现多个分号,所以直接把存储过程复制到命令号一般都会失败
⑦ 怎么写存储过程
一、整体格式。存储过程的格式如下:
CREATE PROCEDURE [creator.]"proc_name" ( /* parameters,... */ )
/* RESULT ( column-name,... ) */
BEGIN
;
END
其中creator是用户名,比如dba;proc_name是你自己起的过程名;后面的参数可有可无,视自己情况定,如果有格式如(a integer,b char(50));再下面的RESULT应该是返回值,这个没用过不知道怎么回事!
二、内容。把这些都写好了可能是这样:
CREATE PROCEDURE dba.myProcere ( @a integer,@b char(50))
BEGIN
;
END
但是这样子还是不能编译的,因为整个过程体是空的,而我学习的结果是过程中至少要有一个SQL语句。所以要这样写才不会出错:
CREATE PROCEDURE dba.myProcere ( a integer,b char(50))
BEGIN
SELECT * FROM MyTable
END
三、语法。
1、分号。在写的过程中最郁闷的问题是分号!最后发现好像是这样:
每一句都要加分号,不管是SQl语句还是其它的什么语句,但是最后保存后最后一句的分号会被自动删除!(我用的是Sybase的Sybase Central)。
2、定义变量。
格式为Declare @varName integer;(注意有分号!)“@”号好像可有可无!
3、SELECT语句。
格式为:
SELECT Count(*) INTO @varName FROM MyTable WHERE id = @a;
4、if语句。
格式为:
if(varName > 0) then
return
end if;(注意还有分号!)
5、循环语句。
格式为:
loop
……
end loop;(注意分号!)
6、设置变量值。
格式为:
set @varName = 10;
set @varName = @varName2;
7、字符串。
Declare myString char(50);
set @myString = 'Hello!';
要用单引号!
8、定义游标。
格式为:
declare MyCursor dynamic scroll cursor for
select …… from …… where ……;
9、打开、使用和关闭游标。
Open MyCursor;
fetch next MyCursor into ……;
Close MyCursor;
10、调用方法。
string ls_name="test"
DECLARE ProcName1 PROCEDURE FOR ProcName2
@wg_wellid=2,@wg_wgid=1,@wg_stringsid=1,@bha_wellid=2,@bha_name=:ls_name;
execute ProcName1 ;
close ProcName1 ;
其中ProcName1 是调用程序中自定义的过程名,ProcName2是数据库中存储过程的名字,下面的传入的参数。
⑧ oracle 10g中如何把分号换成斜杠 我写存储过程的时候在第一个分号处就终止了
replace('string',';','/')
将分号替换成斜杠
⑨ jdbc调用存储过程为什么语句不能加分号
如果你在程序里面写sql,就不要加分号,在程序里面编译器会把分号当做sql本身的一部分,所以会报错 如果是在查询工具里面(比如plsql),这个时候可以加上分号,在工具里面分号是个分隔符,看到分号就标志着本条sql语句结束了; 当然不加也可以,在工具里面看不到分号就认为本条sql没有结束。 比如:你写了两条sql,但是没有用分号隔开,此时,工具会当做一条来执行,只不过会报错而已。
⑩ 存储过程过;号
1.sql语句结束或者commit时要用分号
2.循环结束用分号
3.存储过程结束用分号
4.每一个定义游标用分号
5.定义非输入输出变量用分号
多看点例子大概就清楚了