gpt4 book ai didi

tsql - 将 GUID 参数添加到 sql 字符串

转载 作者:行者123 更新时间:2023-12-05 01:48:37 24 4
gpt4 key购买 nike

我在将 guid 类型添加到 sql 字符串并执行查询时遇到了麻烦。我必须这样写 sql,因为我需要将名称数据库作为参数传递。

下面的代码是我正在尝试做的,但它不起作用。无论我做什么,它都无法正确读取 GUID。执行存储过程时出现以下错误。可能是因为guid里面有“-”

Incorrect syntax near '-'.

代码如下:

ALTER PROCEDURE [dbo].[templatesAndBaskets_Select]
@guid uniqueidentifier,
@DatabaseName varchar(50)
AS
BEGIN
Declare @sql varchar(max)

Set @sql=

'select soldtoid
from ' + @DatabaseName + '.templatesAndBaskets' +
' where ordergroupid = ' + CONVERT(varchar(max),@guid)

print @sql
EXECUTE SP_EXECUTESQL @sql
END

最佳答案

您可能只需要在 GUID 周围加上单引号:

SET @sql =
N'SELECT soldtoid FROM ' + @DatabaseName + N'.templatesAndBaskets' +
N' WHERE ordergroupid = ''' + CONVERT(nvarchar(max), @guid) + N''''

这应该会导致像这样的 SQL 语句:

SELECT soldtoid FROM database.templatesAndBaskets
WHERE ordergroupid = '5E736CE7-5527-40ED-8499-2CA93FC7BC9C'

这是有效的 - 你的 GUID 周围没有单引号是无效的...

更新:对于 sp_Executesql,您还需要将 @sql 变量更改为 NVARCHAR - 试试这个:

ALTER PROCEDURE [dbo].[templatesAndBaskets_Select]
@guid uniqueidentifier,
@DatabaseName NVARCHAR(50)
AS
BEGIN
DECLARE @sql NVARCHAR(MAX)

SET @sql =
N'SELECT soldtoid FROM ' + @DatabaseName + N'.templatesAndBaskets' +
N' WHERE ordergroupid = ''' + CONVERT(nvarchar(max), @guid) + N''''

PRINT @sql
EXECUTE sp_ExecuteSQL @sql
END

这样行吗??

关于tsql - 将 GUID 参数添加到 sql 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9468542/

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