怎么写存储过程
//创建存储过程
CREATE PROCEDURE userData(
IN id INT
)
BEGIN
SELECT * from userdata WHERE userflag = id;
END;
其中IN是传进去的变量;
drop procedure userData;//销毁这个存储过程。
call userData(2) //调用存储过程。
扩展资料:
sql中的存储过程及相关介绍:
CREATE PROCEDURE [拥有者.]存储过程名[;程序编号]
[(参数#1,…参数#1024)]
[WITH
{RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION}
]
[FOR REPLICATION]
AS 程序行
其中存储过程名不能超过128个字。每个存储过程中最多设定1024个参数
(SQL Server 7.0以上版本),参数的使用方法如下:
@参数名数据类型[VARYING] [=内定值] [OUTPUT]。
每个参数名前要有一个“@”符号,每一个存储过程的参数仅为该程序内部使用,参数的类型除了IMAGE外,其他SQL Server所支持的数据类型都可使用。
[内定值]相当于我们在建立数据库时设定一个字段的默认值,这里是为这个参数设定默认值。[OUTPUT]是用来指定该参数是既有输入又有输出值的,也就是在调用了这个存储过程时,如果所指定的参数值是我们需要输入的参数。
同时也需要在结果中输出的,则该项必须为OUTPUT,而如果只是做输出参数用,可以用CURSOR,同时在使用该参数时,必须指定VARYING和OUTPUT这两个语句。
参考资料来源:百度百科-储存过程
//创建存储过程
CREATE PROCEDURE userData(
IN id INT
)
BEGIN
SELECT * from userdata WHERE userflag = id;
END;
其中IN是传进去的变量;
drop procedure userData;//销毁这个存储过程。
call userData(2) //调用存储过程。
扩展资料:
sql中的存储过程及相关介绍:
CREATE PROCEDURE [拥有者.]存储过程名[;程序编号]
[(参数#1,…参数#1024)]
[WITH
{RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION}
]
[FOR REPLICATION]
AS 程序行
其中存储过程名不能超过128个字。每个存储过程中最多设定1024个参数
(SQL Server 7.0以上版本),参数的使用方法如下:
@参数名数据类型[VARYING] [=内定值] [OUTPUT]。
每个参数名前要有一个“@”符号,每一个存储过程的参数仅为该程序内部使用,参数的类型除了IMAGE外,其他SQL Server所支持的数据类型都可使用。
[内定值]相当于我们在建立数据库时设定一个字段的默认值,这里是为这个参数设定默认值。[OUTPUT]是用来指定该参数是既有输入又有输出值的,也就是在调用了这个存储过程时,如果所指定的参数值是我们需要输入的参数。
同时也需要在结果中输出的,则该项必须为OUTPUT,而如果只是做输出参数用,可以用CURSOR,同时在使用该参数时,必须指定VARYING和OUTPUT这两个语句。
参考资料来源:百度百科-储存过程
CREATE PROCEDURE [creator.]"proc_name" ( /* parameters,... */ )
/* RESULT ( column-name,... ) */
BEGIN
;
END
其中creator是用户名,比如dba;proc_name是你自己起的过程名;后面的参数可有可无,视自己情况定,如果有格式如(a integer,b char(50));再下面的RESULT应该是返回值,这个没用过不知道怎么回事!
二、内容。把这些都写好了可能是这样:
CREATE PROCEDURE dba.myProcedure ( @a integer,@b char(50))
BEGIN
;
END
但是这样子还是不能编译的,因为整个过程体是空的,而我学习的结果是过程中至少要有一个SQL语句。所以要这样写才不会出错:
CREATE PROCEDURE dba.myProcedure ( 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是数据库中存储过程的名字,下面的传入的参数。
create database ZhouKaoA
use ZhouKaoA
create table UserInfo --yonghu
(
UserId int primary key identity,
UserNum nvarchar(50),
UserPwd nvarchar(50)
)
[HttpGet]
public int Proc(string DelReson, string DelPicture, int OrderId)
{
int result = 0;
SqlParameter[] spa = new SqlParameter[]
{
new SqlParameter(){ ParameterName="@DelReson",SqlDbType=SqlDbType.NVarChar,SqlValue=DelReson},
new SqlParameter(){ ParameterName="@DelPicture",SqlDbType=SqlDbType.NVarChar,SqlValue=DelPicture},
new SqlParameter(){ ParameterName="@OrderId",SqlDbType=SqlDbType.Int,SqlValue=OrderId},
new SqlParameter(){ ParameterName="@Rults",SqlDbType=SqlDbType.Int,Direction = ParameterDirection.Output}
};
var list = DBHelper.Do_Proc("My_proc", spa);
result = Convert.ToInt32(spa[3].Value);
return result;
}
}
function Submits(url) {
var str = url;
var obj = {
DelReson: $("#reson").val(),
DelPicture: str,
OrderId:ids
}
$.ajax({
url: 'http://localhost:7202/api/Default/Proc',
type: 'get',
data: obj,
dataType: 'json',
success: function (d) {
if (d > 0) {
alert('TiJiaoChengGong');
}
else {
alert('ShiBai');
}
}
})
}
create table Shopping --shangpin
(
ShopId int primary key identity,
ShopName nvarchar(50),
ShopPrice decimal,
ShoNum int,
)
create table OrderInfo --Dingdan
(
Oid int primary key identity,
Oname nvarchar(50),
Otime datetime,
OZhuangtai int,
ShopWid int
)
create table delOrderInfo --DingdanTuihuo
(
DelId int primary key identity,
DelReson nvarchar(100),
DelPicture nvarchar(100),
OrderId int
)
select * from OrderInfo as o join Shopping as s on o.ShopWid = s.ShopId where Oname = 'GuoQi'
go
alter proc My_proc
(
@DelReson nvarchar(100),
@DelPicture nvarchar(100),
@OrderId int,
@Rults int output
)
as
begin
begin try
begin tran
insert into delOrderInfo values(@DelReson,@DelPicture,@OrderId)
update Shopping set ShoNum+=1 where ShopId = (select ShopId from Shopping as s join OrderInfo as o on s.ShopId = o.ShopWid where o.Oid = @OrderId)
commit tran
set @Rults = 1
end try
begin catch
rollback tran
end catch
end
declare @rest int
exec My_proc 'asdas','asdas',1,@rest
select @rest
[HttpGet]
public int Proc(string DelReson, string DelPicture, int OrderId)
{
int result = 0;
SqlParameter[] spa = new SqlParameter[]
{
new SqlParameter(){ ParameterName="@DelReson",SqlDbType=SqlDbType.NVarChar,SqlValue=DelReson},
new SqlParameter(){ ParameterName="@DelPicture",SqlDbType=SqlDbType.NVarChar,SqlValue=DelPicture},
new SqlParameter(){ ParameterName="@OrderId",SqlDbType=SqlDbType.Int,SqlValue=OrderId},
new SqlParameter(){ ParameterName="@Rults",SqlDbType=SqlDbType.Int,Direction = ParameterDirection.Output}
};
var list = DBHelper.Do_Proc("My_proc", spa);
result = Convert.ToInt32(spa[3].Value);
return result;
}
}
function Submits(url) {
var str = url;
var obj = {
DelReson: $("#reson").val(),
DelPicture: str,
OrderId:ids
}
$.ajax({
url: 'http://localhost:7202/api/Default/Proc',
type: 'get',
data: obj,
dataType: 'json',
success: function (d) {
if (d > 0) {
alert('TiJiaoChengGong');
}
else {
alert('ShiBai');
}
}
})
}
编写存储过程
• 使用Notepad文本编辑器,用Oracle PL\/SQL编程语言写一个存储过程;• 在Oracle数据库中创建一个存储过程;• 在Oracle数据库中使用SQL*Plus工具运行存储过程;• 在Oracle数据库中修改存储过程;• 通过编译错误调试存储过程;• 删除存储过程;二.环境配置 包括以下内容...
存储过程写法
CREATE PROCEDURE [拥有者.]存储过程名[;程序编号][(参数#1,…参数#1024)][WITH {RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION} ][FOR REPLICATION]AS 程序行 其中存储过程名不能超过128个字。每个存储过程中最多设定1024个参数 (SQL Server 7.0以上版本),参数的使用方法如下:参数名数据类型[...
sqlserver怎么创建存储过程
第一步:点击数据库下的“可编程性”,选择“存储过程”,点击鼠标右键,选择“新建存储过程”第二步:在create PROCEDURE 后输入存储过程的名字,紧跟着的就是定义存储过程的参数,接下来就可以去编写自己所需要组装的存储过程语句了 注意,怕写的不对,可以执行下,想验证sql语句是否正确,就使用print...
存储过程怎么写···
sql= "select * from type where column1='";sql+=dropdownlist.value+"' and column2='";sql+=textbox.text+"'";或者这样,更好的写法 sql=string.Format("select * from type where column1='{0}' and column2='{1}',dropdownlist.value,textbox.text)如果是存储过程,command....
何为存储过程,举例说明
由于此段数据库操作代码由服务器完成,而客户端只是进行简单的参数提交,所以,可以有效的利用服务器的强劲而减小对客户机的负合。如:你想插入一条数据到数据库。虽然你的要求是,先检查表里面是否己存在该项。如果不存在就Insert,如果存在就UPDATE。这个时候,你就可以把这个判断用存储过程来写。你的...
oracle怎么写存储过程?
你首先要了解存储过程包括哪些模块,哪些是必备的,哪些是可选的.\\x0d\\x0a另外呢,如果有条件的话,最好能找一些模板看看别人是怎么写的,再结合你们公司的实际情况,做一些适当的调整.\\x0d\\x0a例如create or replace procedure +过程名字(变量名 in,数据类型,变量名 out 数据类型)等\\x0d\\x0a...
如何在oracle中写一个存储过程,它的作用是清空emp表中的数据?_百度知 ...
使用动态sql,过程如下:CREATE OR REPLACE PROCEDURE Prc_Delete_Emp IS Lv_Sql VARCHAR2(200);BEGIN Lv_Sql := 'delete emp';EXECUTE IMMEDIATE Lv_Sql;COMMIT;END;
如何写一个存储过程,学生输入学号和学期就能查询出这学期的课程以及成绩...
Sql存储过程:\\x0d\\x0acreate procedure 存储过程名(学号,学期)\\x0d\\x0aas\\x0d\\x0abegin\\x0d\\x0aselect 课程,成绩 from 表名 where 表名.学号=学号 and 表名.学期=学期;\\x0d\\x0aend;\\x0d\\x0aOracle存储过程:\\x0d\\x0acreate or replace procedure 存储过程名(学号,学期,cur_...
哪位帮写个oracle存储过程,新手入门,请不吝赐教,多谢了!
create or replace procedure pro_test(v_yourtime in date)--建立一个名为pro_test的存储过程,并定义一个时间参数,在使用存储过程的时候就直接传参就行了 is v_id table1.id%type,v_name table1.name%type;begin select id,name into v_id,v_name from table1 where filedate=v_yourtime;...
plsql中在包体中怎么写存储过程,要求有完整的代码,以及如何在控制台调...
is procedure query_c(a number,b number)is myxt number;begin myxt:=a*b;dbms_output.put_line(myxt);end query_c;end love_xt;\/ 控制台调用:set serveroutput on;exec love_xt.query_c(12,6);\/ 实现通过包来调用过程输出输入两个数(12,6)(参数自己随意换)的乘积,此结果为72 ...