vb.net 如何调用存储过程
有个存储过程,查询并生成单据号(字符串)
如何调用这个存储过程并取得这个单据号
调用存储过程
我们已经知道如何使用 DataAdapter 来调用 Command 对象,或者如何使用 SQL 语句直接与数据库进行交互。Command 对象还可用于调用存储过程,这通常是数据库交互的首选方法,因为与动态 SQL 语句相比,存储过程通常能够提供更好的性能。
假设 Pubs 数据库包括一个检索作者数据的存储过程:
CREATE PROCEDURE getAuthors
AS
SELECT au_id,au_fname,au_lname
FROM authors
RETURN
我们可以更改 btnCopyToFile 的代码,以使用此存储过程而不是动态 SQL 语句。代码如下所示:
cm.Connection = cn
cm.CommandType = CommandType.StoredProcedure
cm.CommandText = "getAuthors"
CommandType 属性被更改为调用存储过程;CommandText 属性提供了存储过程的名称,而不是 SQL 语句本身。
可以使用存储过程来处理更新,例如:
CREATE PROCEDURE updateAuthor
(
@id varchar(11),
@fname varchar(20),
@lname varchar(40)
)
AS
UPDATE authors
SET au_fname=@fname,
au_lname=@lname
WHERE au_id=@id
RETURN
在本示例中,可以更改 btnFileToDb 的代码以使用存储过程:
cm.Connection = cn
cm.CommandType = CommandType.StoredProcedure
cm.CommandText = "updateAuthor"
这一更改非常容易,因为我们已经在 SQL 语句中使用了参数,代码已经被编写为向 Command 对象提供必要的参数值。
使用存储过程的另一种可能是,我们使用一个包含从存储过程返回的值的输出参数。在这种情况下,我们需要更改参数的配置,以指定相应的 Direction 属性值:
cm.Parameters.Add("@id", SqlDbType.Int)
cm.Parameters("@id").Direction = ParameterDirection.Output
如果存储过程返回一个自动生成的数字 id 值,该参数配置就是适当的。
好
cmdSQL = New SqlCommand
cmdSQL.CommandType = CommandType.StoredProcedure
cmdSQL.CommandText = "LP_GetNewBuyInCode"
知道是这样调用了,关键是怎么取出单据号并放在一个字符串变量里啊 ?
在存储过程里写就是了,用一个返回参数。或者使用一个临时表,然后把组合后的字符串插入,最后返回临时表的该字段。