[英]Conversion failed when converting the nvarchar value to datatype int
我有这两个返回数据的存储过程:
ALTER proc [dbo].[spBuscarUrl]
@CodigoContrato nvarchar(255),
@url nvarchar(255) OUTPUT
AS
SET NOCOUNT ON;
SELECT @url = url
FROM v_compras_y_contrataciones AS cc
WHERE CodigoContrato = @CodigoContrato;
RETURN
当我尝试返回第二个存储过程的值时,错误提示:
ALTER procedure [dbo].[spCaller]
AS BEGIN
DECLARE @URL nvarchar(255);
EXECUTE spBuscarUrl
'MIREX-2017-00001', @url = @URL OUTPUT;
RETURN convert(nvarchar(255),@URL);
END
消息245,级别16,状态1,过程spCaller,第6行转换nvarchar值' https://comunidad.comprasdominicana.gob.do//Public/Tendering/OpportunityDetail/Index?noticeUID=DO1.NTC.2时转换失败'为数据类型int。
问题是spCaller
这一行:
RETURN convert(nvarchar(255),@URL);
RETURN
语句只能返回INT
,而不能返回NVARCHAR
。 如果要从存储产品返回不是INT的任何内容,则需要使用输出参数或SELECT
。
如果要返回值,请使用一个函数。 但是,在这种情况下,由于execute
,您将无法execute
。 因此,使用输出参数:
CREATE FUNCTION [dbo].[spCaller] (
out_url nvarchar(255) output
) AS
BEGIN
EXECUTE spBuscarUrl 'MIREX-2017-00001', @url = @out_URL OUTPUT;
END;
根据您的execute
语句,您似乎知道如何调用这样的存储过程。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.