问题标签 [output-parameter]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 宏中的输出问题?
我有以下 C 代码:
为什么我得到“结果> 4, 2”应该是 8 而不是 4?
mysql - MySQL存储过程的输出参数通过MS Access(VBA)中的ADODB在一台计算机上正确,在另一台计算机上随机
我已经(几乎)尝试了一切来隔离问题,但我迷路了。
我有一个使用 ADODB 连接到本地 MySQL 数据库的 MS Access 应用程序。我将它复制到一台新计算机上,但现在存储过程的输出参数每次都包含一个随机值(如果通过 ADODB 完成)。在 MySQL WorkBench 中执行时,输出参数正确。
以下是两台电脑的规格:
- 旧:Windows 7 Pro、Office 2010 ProPlus、MySQL ODBC 5.3.4、MySQL server 5.6.22(都是64位;也安装了32位ODBC);
- 新:Windows 10 Pro、Office 2016 ProPlus、MySQL ODBC 5.3.6、MySQL server 5.7.16(均为 64 位,MS Office 除外;还安装了 32 位 ODBC)。
为了隔离问题,我使用了以下简单的存储过程:
一个测试 MS Access 数据库仅包含以下 VBA 代码(以及对 Microsoft ActiveX Data Objects 6.1 库的引用):
以下是测试结果:
- 在旧电脑上,dbTestIt() 总是返回 123;
- 在新计算机上,dbTestIt() 返回随机值(例如 51、1936020585、1);
- 如果我从新计算机连接到旧计算机上的 MySQL 服务器(在连接字符串中使用 server=192.168.1.x),它也总是返回 123;
- 这告诉我问题(仅)在新计算机上的MySQL 服务器中(对吗?);
- 但是,如果我从旧计算机连接到新计算机上的 MySQL 服务器,它也总是返回 123!
所以问题似乎出在新计算机上的组件组合上,但是哪个和为什么?以及如何测试它?
有人有什么好主意吗?
sql-server-2008 - 过程或函数“sp256”需要参数“@countcase”,但未提供
使用 SQL Server 2008。
想要@countcase
从名为sp256
. 但是当我执行存储过程时,会出现一个错误:
过程或函数“sp256”需要未提供的参数“@countcase”。
查询是统计联系日期晚于 2016 年 11 月 1 日的病例总数,并作为参数输出。
存储过程:
EXEC
声明:
PS:@countcase 应该总共输出 268 个案例。
有人可以帮忙吗。
sql - 从存储过程中获取引发的异常作为输出变量
我在存储从存储过程引发的异常时遇到问题。
例如,我有两个存储过程P_Add
And P_GetAdd
。
P_Add
如图所示,在除以零时返回异常,过程P_GetAdd
执行P_Add
。
我想将引发的异常返回P_Add
到执行的代码P_GetAdd
。
P_Add
排除未提供的参数是错误。帮助我得到结果。谢谢。
sql - 在我的场景中,如何在存储过程中制作输出参数?
我有一个查询,它将向我的表中插入一个数据,它应该返回一个值
我的存储过程
当我通过以下代码运行此查询时
它抛出错误
Msg 137, Level 15, State 2, Line 2 必须声明标量变量“@ReqID”。
Msg 137, Level 15, State 2, Line 3 必须声明标量变量“@ReqID”。
更新
是的,我做错了。我错过了声明输出参数。但是在我像下面这样执行之后
仍然抛出如下错误
消息 119,第 15 层,状态 1,第 3 行
必须将参数号 5 和后续参数作为“@name = value”传递。使用“@name = value”形式后,所有后续参数必须以“@name = value”形式传递。
asp.net-mvc - 如何使用输出参数在 EF6 中调用存储过程
我有一个存储过程,它返回一个包含字符串的参数我不知道如何调用它并获取输出参数以显示在我的视图中
我试图像下面那样抓住它,但不知道该怎么做。
谢谢
c# - C# & SQL Server 存储过程 - 无法获取输出参数值,返回值有效
我想获得存储过程的输出参数的值,但我一直在获得+1。通过 return 获取值时一切正常。
我设法使用实体框架获得了输出参数的值,但是,它的工作速度非常慢。我附上了我的存储过程和用于从存储过程中获取值的 C# 代码。
带有输出参数的存储过程在 SQL Server 中运行良好。
有人知道为什么我的代码不起作用吗?
提前感谢您的帮助。
存储过程:
带有和输出参数的存储过程的 C# 代码,它使用实体框架并且可以工作,但是速度很慢:
带有和输出参数的存储过程的 C# 代码不起作用:
此代码获取返回值并有效:
c# - 如果是 oracle 原始输出参数,DbType 应该是什么
我正在使用 C# .net 4.5.2 并使用 oracle DB。我正在调用一个具有 RAW 输出参数 (pPF) 的函数:
在我的代码中,我使用以下命令初始化输出参数:
当我从我的 c# 代码调用函数时,我得到了这个异常(当我直接使用相同的参数运行函数时没有异常......):“ORA-06502:PL/SQL:数字或值错误:原始变量长度太长”,来自这一行:pPF := IDS(IDS.FIRST);
而IDS(IDS.FIRST)
值为 5093A4805899EB448F96BF9976F230AF。我尝试了不同的 DbType,但没有帮助。
我究竟做错了什么?
c# - 用c#写入输出参数
在 SQL Server 中,我可以将值IN传递给存储过程输出参数,对其进行更改,然后将其读回:
但是,当我尝试从 C# 执行此操作时,它不起作用:
最后的int x
赋值抛出错误
指定的演员表无效
我哪里错了?
c++ - 返回容器时去掉输出参数
当返回一个容器时,我总是必须确定我应该使用返回值还是使用输出参数。如果性能很重要,我选择了第二个选项,否则我总是选择第一个选项,因为它更直观。
坦率地说,我个人一直强烈反对输出参数,可能是因为我的数学背景,但是当我没有其他选择时使用它们是可以的。
然而,当涉及到泛型编程时,情况已经完全改变了。在某些情况下,函数可能不知道它返回的对象是一个巨大的容器还是一个简单的值。
始终使用输出参数可能是我想知道是否可以避免的解决方案。如果我不得不这样做,那就太尴尬了
相比
此外,有时 的返回类型f()
没有默认构造函数。如果使用输出参数,则没有优雅的方式来处理这种情况。
我想知道是否有可能返回一个“修饰符对象”,一个接受输出参数的仿函数来适当地修改它们。(也许这是一种惰性求值?)嗯,返回这样的对象不是问题,但问题是我不能插入一个适当的重载赋值运算符(或构造函数),它接受这样一个对象并触发它当返回类型属于我无法触及的库时,请完成它的工作,例如std::vector
. 当然,转换运算符没有帮助,因为它们无法访问为目标对象准备的现有资源。
有人可能会问为什么不使用assign()
; 定义一个具有begin()
&的“生成器对象” end()
,并将这些迭代器传递给std::vector::assign
. 这不是一个解决方案。第一个原因,“生成器对象”没有对目标对象的完全访问权限,这可能会限制可以做的事情。对于第二个也是更重要的原因,我的函数的调用点f()
也可能是一个模板,它不知道确切的返回类型f()
,因此它无法确定assign()
应该使用赋值运算符还是成员函数。
我认为修改容器的“修改器对象”方法应该在过去已经讨论过,因为它根本不是一个新想法。
总结一下,
- 是否可以使用返回值来模拟使用输出参数时会发生什么,特别是当输出是容器时?
- 如果没有,是否将这些支持添加到之前讨论的标准中?如果是,有什么问题?这是一个可怕的想法吗?
编辑
我上面的代码示例具有误导性。该函数f()
可用于初始化局部变量,但也可用于修改在别处定义的现有变量。对于第一种情况,正如 Rakete1111 所提到的,当复制省略开始发挥作用时,按值返回没有问题。但是对于第二种情况,可能会有不必要的资源释放/获取。