【发布时间】:2014-09-03 15:43:26
【问题描述】:
是否可以创建一个函数/过程,可以在这样的 SQL 语句中使用:
INSERT INTO Journal(ProductID,Quantity) VALUES(LookupOrCreateProduct('12345678'),5)
LookupOrCreateProduct 应按字符串(条形码)查找产品表,并且:
* 如果找到条形码 - 返回产品 ID
* 如果未找到条形码 - 在 Products 表中使用新条形码创建新记录并返回其 ID
我探索了 SQL Server 函数,但它们不允许 INSERTs 或函数体内的任何其他数据库修改。存储过程可以返回值,但它们只能是int 类型。我的 ID 列是bigint。另一种选择是使用输出参数,但我不清楚如何在 SQL 语句中内联它。谢谢。
【问题讨论】:
-
设置 Bigint 数据类型的输出参数并从存储过程中返回并保存到变量中,然后将其用于插入查询...
-
你不能用函数来做到这一点。 And you should use an OUTPUT parameter, not a RETURN value。 RETURN 值用于错误/状态代码,而不用于数据;主要原因之一正是您所发现的:它们仅对整数有用。
标签: sql sql-server inline-functions