gpt4 book ai didi

sql - 存储过程和在参数调用中使用 sql 函数

转载 作者:行者123 更新时间:2023-12-04 06:27:15 26 4
gpt4 key购买 nike

环境sql server 2005 sp3

我有一个以 INT 作为输入的存储过程。我想在调用存储过程期间将 CHAR 转换为 INT。看来我不能那样做。我在@foo 之前收到语法错误。我看不到它请有人帮我找到它。

CREATE PROCEDURE testme
@test AS INT
AS
BEGIN
SELECT @TEST
END

DECLARE @foo AS CHAR(6)
set @foo = '11test'
EXEC testMe @test = CAST(Substring(@foo,1,2) as int)

最佳答案

首先,您不能将 '11test' 转换为 int

其次,如果值可以转换为int,则不需要强制转换,会发生隐式转换

DECLARE @foo AS CHAR(6)
set @foo = '2'


EXEC testMe @test =@foo

如果您想测试它是否可以转换为 int,请从此处获取 IsInt 函数: IsNumeric, IsInt, IsNumber并在进行 proc 调用之前使用它进行测试

编辑

这是你如何做到的
DECLARE @foo AS CHAR(6)
set @foo = '11test'
SET @foo = CAST(Substring(@foo,1,2) as int)

EXEC testMe @test = @foo

您不能将函数传递给 procs,这就是 GETDATE() 不起作用的原因,要么使用中间变量,要么转换回相同的变量

关于sql - 存储过程和在参数调用中使用 sql 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5901214/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com