怎么写存储过程

 我来答
badkano
2014-10-26 · 知道合伙人体育行家
badkano
知道合伙人体育行家
采纳数:144776 获赞数:885365
团长

向TA提问 私信TA
展开全部
一、整体格式。存储过程的格式如下:
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是数据库中存储过程的名字,下面的传入的参数。
匿名用户
2020-07-09
展开全部
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');
}
}
})
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式