存储过程设置参数
1. 存储过程中的参数问题
需要两个输入参数:
@CODE
@NAME
create proc uspSelcte
@code int,
@name varchar(20)
as
begin
select *
from student
where code=@code or name=@name
end
--------------------
使用方法:
EXEC uspSelcte '1',''
或者
EXEC uspSelcte '','张三'
2. sql存储过程修改,设置默认参数。
select部门号,部门名称from系统参数表where部门名称='你们部门的名称'
--然后
set@bm='部门号',@部门='部门名称'
3. SQL 存储过程中参数怎么使用
参数定义
单个参数
1>
CREATE
PROCEDURE
HelloWorld1
2>
@UserName
VARCHAR(10)
3>
AS
4>
BEGIN
5>
PRINT
'Hello'
+
@UserName
+
'!';
6>
END;
7>
go
1>
DECLARE
@RC
int;
2>
EXECUTE
@RC
=
HelloWorld1
'Edward'
;
3>
PRINT
@RC;
4>
go
HelloEdward!
0
IN、OUT、IN
OUT
注:
SQL
Server
的
OUTPUT
需要写在变量数据类型后面。
SQL
Server
没有
IN
OUT
关键字
OUTPUT
已经相当于
IN
OUT
了。
1>
CREATE
PROCEDURE
HelloWorld2
2>
@UserName
VARCHAR(10),
3>
@OutVal
VARCHAR(10)
OUTPUT,
4>
@InoutVal
VARCHAR(10)
OUTPUT
5>
AS
6>
BEGIN
7>
PRINT
'Hello
'
+
@UserName
+
@InoutVal
+
'!';
8>
SET
@OutVal
=
'A';
9>
SET
@InoutVal
=
'B';
10>
END;
11>
go
1>
2>
DECLARE
@RC
int,
@OutVal
VARCHAR(10),
@InoutVal
VARCHAR(10);
3>
BEGIN
4>
SET
@InoutVal
=
'~Hi~';
5>
EXECUTE
@RC
=
HelloWorld2
'Edward',
@OutVal
OUTPUT,
@InoutVal
OUTPUT;
6>
PRINT
@RC;
7>
PRINT
'@OutVal='
+
@OutVal;
8>
PRINT
'@InoutVal='
+
@InoutVal;
9>
END
10>
go
Hello
Edward~Hi~!
0
@OutVal=A
@InoutVal=B
参数的默认值
1>
CREATE
PROCEDURE
HelloWorld3
2>
@UserName
VARCHAR(10),
3>
@Val1
VARCHAR(20)
=
'
Good
Moning,',
4>
@Val2
VARCHAR(20)
=
'
Nice
to
Meet
you'
5>
AS
6>
BEGIN
7>
PRINT
'Hello
'
+
@UserName
+
@Val1
+
@Val2
+
'!';
8>
END;
9>
go
1>
2>
DECLARE
@RC
int;
3>
BEGIN
4>
EXECUTE
@RC
=
HelloWorld3
'Edward';
5>
PRINT
@RC;
6>
EXECUTE
@RC
=
HelloWorld3
'Edward',
'
Good
Night,';
7>
PRINT
@RC;
8>
EXECUTE
@RC
=
HelloWorld3
'Edward',
'
Good
Night,',
'
Bye';
9>
PRINT
@RC;
10>
END
11>
go
Hello
Edward
Good
Moning,
Nice
to
Meet
you!
0
Hello
Edward
Good
Night,
Nice
to
Meet
you!
0
Hello
Edward
Good
Night,
Bye!
0
指定参数名称调用
此部分使用
“参数默认值”那一小节的存储过程。
用于说明当最后2个参数是有默认的时候,如何跳过中间那个。
1>
DECLARE
@RC
int;
2>
BEGIN
3>
EXECUTE
@RC
=
HelloWorld3
'Edward';
4>
PRINT
@RC;
5>
EXECUTE
@RC
=
HelloWorld3
'Edward',
@Val1='
Good
Night,';
6>
PRINT
@RC;
7>
EXECUTE
@RC
=
HelloWorld3
'Edward',
@Val1='
Good
Night,',
@Val2='
Bye';
8>
PRINT
@RC;
9>
EXECUTE
@RC
=
HelloWorld3
'Edward',
@Val2='
HeiHei
';
10>
PRINT
@RC;
11>
END
12>
go
Hello
Edward
Good
Moning,
Nice
to
Meet
you!
0
Hello
Edward
Good
Night,
Nice
to
Meet
you!
0
Hello
Edward
Good
Night,
Bye!
0
Hello
Edward
Good
Moning,
HeiHei
!
0
4. DB2中建立存储过程的详细参数和语法
DECLARE CHOICE2 CURSOR WITH RETURN TO CALLER FOR --声明游标 CHOICE2
SELECT COMPANYID,DEPTID,SEQID,SUBMITTIME,SUBMITDATE,
B.GRADEDESC HYEAR,PRODUCTID,PRODUCTCODE,PRODUCTDESC,
A.GRADEID,PRICE,SFZDPY,LQUANT,MQUANT,MCQUANT,LCQUANT,
UQUANT,OTHQUANT1,OTHQUANT2,OTHQUANT3,OTHQUANT4,EMP1,EMP2,STATUS,A.REMARK,
DECIMAL(ABS(MCQUANT-MQUANT)/NULLIF(MQUANT,0)*100,10,2)TAG
FROM T_SUPPLY_PPB_HY A
LEFT JOIN T_SUPPLY_GRADATION B ON A.GRADEID=B.GRADEID
WHERE HYEAR=TO_CHAR(P_NF)||P_BN
ORDER BY B.GRADEID,PRODUCTCODE,A.PRICE;
--1.DECIMAL(P,S)十进制数,小数点位置由数字的精度(P)和小数位(S)确定。
-- 精度是数字的总位数,必须小于32。小数位是小数部分数字的位数且总是小于或等于精度值。
-- 如果未指定精度和小数位,则十进制值的缺省精度为5,缺省小数位为0。
--2.语法:NULLIF ( expression , expression )
-- expression:(常量、列名、函数、子查询或算术运算符、按位运算符以及字符串运算符的任意组)
-- 如果两个表达式不相等,NULLIF 返回第一个 expression 的值。如果相等,NULLIF 返回第一个 expression 类型的空值。如果两个表达式相等且结果表达式为 NULL,NULLIF 等价于 CASE 的搜索函数。
5. SQL 存储过程输入参数怎么设置可为空
你可以在触发器上调用存储过程,
触发器中有两个临时表inserted
和deleted
,这两个表的表结构和创建触发器的表是一样的,
inserted表存的是当前插入或更新后的值,
deleted表存的是当前删除或修改前的值.
你可以利用以上两个临时表的值来获得你要的参数值,然后调用时传入存储过程
另外你也可以直接在触发器中操作,不用存储过程。
6. 调用oracle存储过程时如何在程序中设置存储过程参数大小
在c++中用ado和bde的存储过程组件都可以调用存储过程呀。
设置一下存储过程的名字,参数的类型和长度,为每个参数赋值,调用即可。
frmData->
spOracle->
Parameters->
ParamByName(
"dhhm
")->
Value
=
phoneNo;
frmData->
spOracle->
ExecProc();
希望能够帮助到你啊
7. C#三层中使用SqlParameter数组设置和获得存储过程参数
SqlParameter inputParam = new SqlParameter("name", value);
SqlParameter outputParam = new SqlParameter("name", value);
outputParam.Direction = ParameterDirection.Output;
sqlCmd.addParameter(input);
sqlCmd.addParameter(output);
sqlCmd.executeNonQuery("storedProcName");
object outputValue = outputParam.Value;
更详细的请看msdn的技术资源库里的类库参考,上面都有。
8. SQL存储过程,写参数
CREATE DEFINER=`root`@`%` PROCEDURE `Procere`( IN beginThisMonth varchar(200),IN endThisMonth varchar(200))
BEGIN
SELECT
*
FROM
ceshi
WHERE
shijian between @beginThisMonth and @endThisMonth;
END
设置两个储存过程的参数,
IN
OUT
INOUT
这几个关键词

9. sqlserver存储过程如何建立可选参数
SQL Server 中的存储过程(Procere),带入参数和出参数。
存储过程(Procere)-基本创建与操作。
--一、无参存储过程
create procere PTitles
as
select * from titles
go
--2,执行存储过程
execute PTitles
go
--3,移除存储过程
--drop procere PTitles
go
5.存储过程(Procere)-带入参。
create proc P_Titles_ByType
@type char(12) --入参
as
select * from titles where type=@type
go
--,执行带参数的存储过程
--a)方式一
exec P_Titles_ByType @type='business'
go
--b)方式二
exec P_Titles_ByType 'business'
6.存储过程(Procere)-带入参和出参。
create proc P_Titles_ByTypeAndPrice
@type char(12), --入参
@price money --入参
as begin
select * from titles
where type=@type and price>@price
end
10. 存储过程输入参数设置默认值问题
问题补充:如果例中,动作=“入库” ; 日期 的默认值应该设置多少? 你在存储过程里,给这个参数一个默认值就ok了。 这里应该有三个参数吧,
