sql server execute存储过程怎么带参

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql server execute存储过程怎么带参相关的知识,希望对你有一定的参考价值。

create PROCEDURE MEMBERAPPLYCARRY_CARRYMONEYRECORD_INSERT
@memberNo varchar(30),
@applyTime datetime , //这个是系统时间 GETDATE()的

@collectionAccount varchar(50),
@cardholder varchar(10),
@carryState int //这个有个默认值 1001

AS
BEGIN
insert into memberapplycarry(memberNo,applyTime,collectionAccount,cardholder,carryState)
values(@memberNo,@applyTime,@collectionAccount,@cardholder,default);
END
我怎么带参呢 EXECUTE MEMBERAPPLYCARRY_CARRYMONEYRECORD_INSERT '','','','',''
各们大神能帮我写个吗 创建和执行都要 这个我实在是搞不懂 谢谢各位啊

你是问创建呢还是执行呢?
创建的话默认值就@applyTime datetime=getdate()
执行的时候可以显示指定内部参数
EXECUTE MEMBERAPPLYCARRY_CARRYMONEYRECORD_INSERT
@memberno='abc',@collectionAccount='abc',@cardholder='abc'
有默认值的可以不指定追问

默认值在创建的时候需要定义吗 比如这样 @carryState =default;

追答

不是必须的,但是如果你不在创建时规定默认值,执行时就必须给相应的参数值
像我上面给你洗的例子,@applyTime我设置了默认值,在下面执行的时候就没给它的参数
若不给加默认值,下面执行的时候也不给参数就报错了

追问

但是创建的时候不能 那样子写啊 @applyTime datetime=getdate() 这样子写会报错

追答

啊,忘记了,存储过程无论是创建还是执行,参数中都不能带函数
getdate()是个函数,所以会报错,你执行的时候带有getdate()也会报错
你可以@applyTime datetime=null,然后在语句块中判断,
如果是null就赋值getdate(),否则就不用赋值,
直接用@applyTime这个变量即可

参考技术A 执行带参数的存储过程:
方式一
exec P_Titles_ByType @type='business'
go
方式二
exec P_Titles_ByType 'business'

SQL Server 如何执行 带参数的 存储过程

参考技术A

带参数的存储过程执行方法如下:

(1)调用通用数据访问类:SqlHelper,执行SqlHelper.ExecuteNonQuery()方法

(2)使用示例:SqlHelper.ExecuteNonQuery(conn,CommandType.StoredProcedure,sqlexec,myparm)

(3)其中传递的4个参数如下:

“conn”:为链接字符

“CommandType.StoredProcedure”:表示要执行的SQL存储过程类型

“sqlexec”:要执行的SQL存储过程

“myparm”:为传递的参数,它需要参数的初始化、赋予参数名称、设定类型、长度和值等

(4)当ExecuteNonQuery()执行select 查询时,结果总是返回-1。ExecuteNonQuery()执行Update、Insert和Delete语句时,返回值为该命令所影响的行数。

以上是关于sql server execute存储过程怎么带参的主要内容,如果未能解决你的问题,请参考以下文章

PetaPoco 访问SQL SERVER 存储过程

sql server 中executenon quary用法

如何使用EXECUTE关键字执行带参数的PL / SQL存储过程[关闭]

SQL Server 如何执行 带参数的 存储过程

SQL 存储过程中参数怎么使用

用SQL创建存储过程的题目(SQL SERVER2000下)