Foxtable(狐表)用户栏目专家坐堂 → 如果获取储存过程的单个返回字符值?


  共有4040人关注过本帖树形打印复制链接

主题:如果获取储存过程的单个返回字符值?

帅哥哟,离线,有人找我吗?
happyft
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1930 积分:17558 威望:0 精华:0 注册:2014/7/29 19:09:00
如果获取储存过程的单个返回字符值?  发帖心情 Post By:2023/2/22 14:32:00 [只看该作者]

 '生成表单自动编号
    Dim tbname As String = "采购单"
    Dim cmd As New SQLCommand
    cmd.ConnectionName = Mydata
    cmd.CommandText = "usp_tbautoID"
    cmd.StoredProcedure = True
    cmd.Parameters.Add("@bh", "0", False) '这是参数想获取存储过程的返回字符型的值要填写1还是空
    cmd.Parameters.Add("@tbname", tbname) '第二个参数指定输入参数
    Dim bh As String = Cmd.Parameters("@bh") '取得存储过程的返回值
    'cmd.ExecuteNonQuery

    MessageBox.Show(bh)

sql的储存过程中用了output参数,上面想返回字符型的单个值总是出错,应该如何写才可以,上面的写法返回数值没问题

谢谢!

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110553 积分:562655 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/2/22 14:51:00 [只看该作者]


    cmd.Parameters.Add("@tbname", tbname) '第二个参数指定输入参数
cmd.ExecuteNonQuery
    Dim bh As String = Cmd.Parameters("@bh") '取得存储过程的返回值

 回到顶部
帅哥哟,离线,有人找我吗?
HappyFt
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1930 积分:17558 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2023/2/22 15:00:00 [只看该作者]

那样也是会出错,显示 
String[0]: Size 属性具有无效大小值 0。

cmd.Parameters.Add("@bh", "", False) '这是参数想获取存储过程的返回字符型的值要填写1还是空
返回字符时上面这名中间是写0,1还是空都不对


 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110553 积分:562655 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/2/22 15:13:00 [只看该作者]

存储过程怎么定义的

 回到顶部
帅哥哟,离线,有人找我吗?
HappyFt
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1930 积分:17558 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2023/2/22 15:17:00 [只看该作者]

--表单自动编号(不能回收编号)(无编号明细及记录表)
ALTER PROCEDURE [dbo].[usp_tbautoID]
    (
      @tbname NVARCHAR(16) ,
      @bh NVARCHAR(16) OUTPUT
    )
AS
    BEGIN

            ----  --生成编号的过程略 ---- 
              
                --格式化后输出编号
                SELECT  @sx = RIGHT(@num + CAST(@Key AS VARCHAR), LEN(@num)); --23-->023
                SELECT  @bh = REPLACE(@pf, @num, @sx); --1806-000-->1806-023 

            END;


 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110553 积分:562655 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/2/22 15:29:00 [只看该作者]

认真理解一下帮助:http://www.foxtable.com/webhelp/topics/3267.htm

    cmd.StoredProcedure = True
    cmd.Parameters.Add("@tbname", tbname) '第二个参数指定输入参数
    cmd.Parameters.Add("@bh", "", True) '这是参数想获取存储过程的返回字符型的值要填写1还是空
    cmd.ExecuteNonQuery
    Dim bh As String = Cmd.Parameters("@bh") '取得存储过程的返回值

 回到顶部