以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]存储过程返回参数写法  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=99591)

--  作者:狐作非为
--  发布时间:2017/4/21 20:01:00
--  [求助]存储过程返回参数写法
  \'执行存储过程,并返回参数
              Dim adocomm As New ADODB.Command
              Dim ReturnValue As Integer
              Set adocomm.ActiveConnection = connsys
              adocomm.CommandText = "proc_tabom_constrast"
              adocomm.CommandType = adCmdStoredProc
              adocomm.Parameters.Item("@bomType").Value = "bom"
              adocomm.Parameters.Item("@bomnum").Value = 0
              adocomm.Parameters.Item("@pid").Value = "returnPid"
              adocomm.Execute
              ReturnValue = adocomm.Parameters(0) \'存储过程的返回值,返回1则成功执行。
              If ReturnValue = "-1" Then
                 exsheet1.Cells(k, 1) = "编号出错"
                 \'MsgBox "历史BOM库中没有找到相同的BOM! 页号:" & j
              Else
     end if

以上为VB代码,请问在foxtable中如何写
[此贴子已经被作者于2017/4/21 20:02:22编辑过]

--  作者:狐作非为
--  发布时间:2017/4/21 20:09:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20170421200945.png
图片点击可在新窗口打开查看

Dim Cnn As New Data.OleDB.OleDbConnection(Connections("ns_sys").ConnectionString)
Cnn.Open()
Dim adoCmd As New Data.OleDB.OleDbCommand("proc_tabom_constrast", Cnn)
adoCmd.CommandType = System.Data.CommandType.StoredProcedure
adoCmd.Parameters.Add("@bomType", System.Data.SqlDbType.NVarchar)
adoCmd.Parameters("@bomType").Value = "bom"
adoCmd.Parameters.Add("@bomnum", System.Data.SqlDbType.Int)
adoCmd.Parameters("@bomnum").Value = 0
adoCmd.Parameters.Add("@pid", System.Data.SqlDbType.NVarchar, 50)
\'adoCmd.Parameters("@pid").Value ="returnPid"
adoCmd.Parameters("@pid").Direction = System.Data.ParameterDirection.Output
adoCmd.ExecuteNonQuery()
output.show(adoCmd.Parameters("@pid").Value.ToString())


--  作者:狐作非为
--  发布时间:2017/4/21 20:45:00
--  
请版主大人支持下,有点急
--  作者:有点蓝
--  发布时间:2017/4/21 21:26:00
--  
存储过程的参数定义发上来看看
--  作者:狐作非为
--  发布时间:2017/4/21 21:38:00
--  

ALTER PROCEDURE [dbo].[proc_bom_constrast]
(       @bomType varchar(20),     --BOM类型
        @bomnum  int,             --记录数量
    @pid varchar(80) output   --返回产品ID
)


--  作者:有点蓝
--  发布时间:2017/4/21 22:13:00
--  
类型要一致

存储过程改成nvarchar试试

@bomType nvarchar(20)


或者代码使用System.Data.SqlDbType.VarChar

--  作者:狐作非为
--  发布时间:2017/4/21 22:43:00
--  
第一种方式无效,报错一样
第二种方式无效,报错(Varchar,没有这个枚举)

[此贴子已经被作者于2017/4/21 22:46:12编辑过]

--  作者:有点蓝
--  发布时间:2017/4/21 23:12:00
--  
System.Data.SqlDbType.VarChar我测试是有的,这是基本类型
--  作者:有点蓝
--  发布时间:2017/4/21 23:14:00
--  
连接的是什么数据库?
--  作者:狐作非为
--  发布时间:2017/4/21 23:14:00
--  
mssql