sqlserver存储过程结果是'001'(varchar),return回来的值却是'1'

createprocsp_xxx_get_id(@o_idvarchar(15)output)asbeginset@o_id='001';endGOdeclare@resultvarchar(15);execsp_xxx_get_id@resultoutputselect@resultasid

以上是一个例子,供参考。

存储过程可以返回整数。
在您的示例中,001被转换为整数1。
如果id是另一个字符,例如“abc”,您的调用方法将导致错误。

sqlserver存储过程返回结果集的例子

不需要使用Output返回结果集。
选中的可以退回。
在应用程序或Web应用程序中,您调用存储过程的对象可以作为常规记录集调用查询分析器,您可以在下面的“网格”中直接看到返回的结果集。

sqlserver数据库存储过程返回值只能是integer类型吗?不能返回字符串吗?

发帖者提到return语句执行后影响的行数是它有多种类型和记录集,比如上面提到的createprocedureusp_select@wherenvarchar(100)asbeginselect*frommytablewherecondition=@whereendreturngo-。
--------------------------------------当启用SETNOCOUNT计数时,存储过程不会返回。
(指示受Transact-SQL语句影响的行数)。
当SETNOCOUNT被禁用时,返回一个计数。
如果存储过程包含实际上不返回太多数据的语句。
此设置可以通过显着减少网络流量来显着提高性能。

sqlserver存储过程exec执行查询返回条数

存储过程定义语句中的变量,带有指示返回值的输出选项。
例如:CREATEproceduresp_test$t_flagintoutputAS...此处定义的$t_flag变量可以产生一个返回值。
在过程期间为其赋值,调用该过程的程序可以接收该值。