当前位置:首页 » 存储配置 » sql存储过程声明

sql存储过程声明

发布时间: 2022-12-14 12:47:50

sql 存储过程

sql的存储过程有点类似函数,c#里就像执行sql语句一样 执行存储过程就行,

(1)执行一个没有参数的存储过程的代码如下:

SqlConnection conn=new SqlConnection(“connectionString”);
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = new SqlCommand();
da.SelectCommand.Connection = conn;
da.SelectCommand.CommandText = "NameOfProcere";
da.SelectCommand.CommandType = CommandType.StoredProcere;
然后只要选择适当的方式执行此处过程,用于不同的目的即可。

(2)执行一个有参数的存储过程的代码如下(我们可以将调用存储过程的函数声明为ExeProcere(string inputdate)):

SqlConnection conn=new SqlConnection(“connectionString”);
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = new SqlCommand();
da.SelectCommand.Connection = conn;
da.SelectCommand.CommandText = "NameOfProcere";
da.SelectCommand.CommandType = CommandType.StoredProcere;
(以上代码相同,以下为要添加的代码)
param = new SqlParameter("@ParameterName", SqlDbType.DateTime);
param.Direction = ParameterDirection.Input;
param.Value = Convert.ToDateTime(inputdate);
da.SelectCommand.Parameters.Add(param);
这样就添加了一个输入参数。若需要添加输出参数:

param = new SqlParameter("@ParameterName", SqlDbType.DateTime);
param.Direction = ParameterDirection.Output;
param.Value = Convert.ToDateTime(inputdate);
da.SelectCommand.Parameters.Add(param);
若要获得参储过程的返回值:

param = new SqlParameter("@ParameterName", SqlDbType.DateTime);
param.Direction = ParameterDirection.ReturnValue;
param.Value = Convert.ToDateTime(inputdate);
da.SelectCommand.Parameters.Add(param);

㈡ SQL存储过程提示必须声明变量@ID(在线等)

CREATE procere getList
@ID int,
as
修改:
CREATE procere getList
@ID int
as
除掉 ,
2005创建成功

㈢ sql 执行存储过程的参数怎么声明

create procere MonthReport
@reportStartDate datetime,@reportEndDate datetime --参数
as
begin transaction
.......

commit transaction
go
------------------------
execute MonthReport '2011-07-01','2011-07-31' --调用存储过程
go

㈣ sql 存储过程中 如何使用declare 有的存储过程声明了,有的没有声明。请回答的详细点。。谢谢

存储过程既可以有declare语句,也可以没有,declare声明的是一个语句块,是pl/sql执行的基本单位,

案例:一个基本的declare语句块

DECLARE
e_invalid_departmentEXCEPTION;--声明部分,给例外命名
BEGIN
UPDATEdepartments
SETdepartment_name='OracleTechnologyCenter'
WHEREdepartment_id=60;
IFSQL%NOTFOUNDTHEN
RAISEe_invalid_department;--程序执行部分,使用raise语句显示抛出例外
ENDIF;
COMMIT;
EXCEPTION
WHENe_invalid_departmentTHEN--例外处理部分,处理抛出的例外
DBMS_OUTPUT.PUT_LINE('Nosuchdepartmentid.');
END;

一个简单的存储过程案例:

CREATEPROCEDUREquery_emp(p_idINemployees.employee_id%TYPE,
p_nameOUTemployees.last_name%TYPE,
p_salaryOUTemployees.salary%TYPE,
p_commOUTemployees.commission_pct%TYPE)
AUTHIDCURRENT_USERIS
BEGIN
SELECTlast_name,salary,commission_pct
INTOp_name,p_salary,p_comm
FROMemployees
WHEREemployee_id=p_id;
ENDquery_emp;

㈤ SQL存储过程 必须声明标量变量问题 数据库中执行成功,但是当我用程序调用存储过程时提示“必须声明标量”

exec('insert into ' +@tablename+ ' values(@caname,@firsturl,@num,@seconrl,@fromurl,@flg)')
修改一下:
exec('insert into ' +@tablename+ ' values('+@caname+ ','+@firsturl+ ','+@num+ ','+@seconrl+ ','+@fromurl+ ','+@flg+ ')')

㈥ 在SQL存储过程中,如何声明变量,赋值变量。最好有具体语句配上实例。3Q啦。谢谢各位大侠的帮忙

/*
Sql server 存储过程中怎么将变量赋值
*/

--SQL赋值语句
DECLARE @test1 INT
SELECT @test1 = 111
SET @test1 = 222

--SQL函数赋值,假定count()是自定义函数
DECLARE @test2 INT
SELECT @test2 = COUNT(*) FROM sys.sysobjects

--SQL存储过程赋值,直接传参处理(类似C语言中的指针吗)
IF OBJECT_ID('sp_test') IS NOT NULL DROP PROCEDURE sp_test
GO
CREATE PROCEDURE sp_test(@test INT OUTPUT)
AS
BEGIN
SELECT @test = 999
END
GO

DECLARE @test3 INT
EXEC sp_test @test3 OUTPUT
SELECT @test3

DROP PROCEDURE sp_test
GO

㈦ SQL 中存储过程怎么使用

一、简单的储存过程:

1、创建一个存储过程

create procere GetUsers()

begin

select * from user;

end;12345

2、调用存储过程

call GetUsers();12

3、删除存储过程

drop procere if exists GetUsers;

二、带参数的存储过程

1、MySql 支持 IN (传递给存储过程) , OUT (从存储过程传出) 和 INOUT (对存储过程传入和传出) 类型的参数 , 存储过程的代码位于 BEGIN 和 END 语句内 , 它们是一系列 SQL 语句 , 用来检索值 , 然后保存到相应的变量 (通过指定INTO关键字) ;

2、下面的存储过程接受三个参数 , 分别用于获取用户表的最小 , 平均 , 最大分数 , 每个参数必须具有指定的类型 , 这里使用十进制值(decimal(8,2)) , 关键字 OUT 指出相应的参数用来从存储过程传出

create procere GetScores(

out minScore decimal(8,2),

out avgScore decimal(8,2),

out maxScore decimal(8,2)

)

begin

select min(score) into minScore from user;

select avg(score) into avgScore from user;

select max(score) into maxScore from user;

end;1234567891011

3、调用此存储过程 , 必须指定3个变量名(所有 MySql 变量都必须以@开始) , 如下所示 :

call GetScores(@minScore, @avgScore, @maxScore);12

4、该调用并没有任何输出 , 只是把调用的结果赋给了调用时传入的变量@minScore, @avgScore, @maxScore, 然后即可调用显示该变量的值 :

select @minScore, @avgScore, @maxScore;

5、使用 IN 参数 , 输入一个用户 id , 返回该用户的名字 :

create procere GetNameByID(

in userID int,

out userName varchar(200)

)

begin

select name from user

where id = userID

into userName;

end;12345678910

6、调用存储过程 :

call GetNameByID(1, @userName);

select @userName;123

㈧ SQL server2000存储过程,提示“必须声明变量@FYear”

存储过程中肯定使用到了@FYear,而你没有声明这个变量。
decalre @FYear 类型
如果你声明了,那你把语法写出来吧,肯定是哪个地方不小心写错了。
看您贴出的代码,可不只是这个提示这个错误了。
首先你的@sqlstr没声明
后边的set @sqlstr = @sqlstr + 加号的后边都是字符串的部分,也就是说,存储过程的两个参数,都被你引到了单引号当中,那么就失去了传值的作用了,成了字符串的一部分了。
还有select @sqlstr=@sqlstr+',coalesce(p.'+FEmpField+',0)' from cz_t_gzfl order by fid,这个返回行数是一行吧?如果是多行,这个没办法赋值的。

㈨ 高分求解:SQL存储过程输出参数必须声明标量变量问题

exec('select @totalCount = count(['+ @orderByWhere +']) from '+ @pageTable +' where '+ @pageWhere)

你count 直接count(*) 就可以了...
网上Demo很多你找一个直接用多好

热点内容
java返回this 发布:2025-10-20 08:28:16 浏览:600
制作脚本网站 发布:2025-10-20 08:17:34 浏览:892
python中的init方法 发布:2025-10-20 08:17:33 浏览:586
图案密码什么意思 发布:2025-10-20 08:16:56 浏览:771
怎么清理微信视频缓存 发布:2025-10-20 08:12:37 浏览:690
c语言编译器怎么看执行过程 发布:2025-10-20 08:00:32 浏览:1017
邮箱如何填写发信服务器 发布:2025-10-20 07:45:27 浏览:261
shell脚本入门案例 发布:2025-10-20 07:44:45 浏览:120
怎么上传照片浏览上传 发布:2025-10-20 07:44:03 浏览:809
python股票数据获取 发布:2025-10-20 07:39:44 浏览:719