开发者社区> 问答> 正文

在sql中使用用户定义的表类型时出错->操作数类型冲突:varchar与“用户定义的表类型”不兼容

我正在尝试在存储过程中使用用户定义的表,但是在运行过程时却出现以下错误

"Operand type clash: varchar is incompatible with ..."

我已经定义了一个用户定义的表格,如下所示:

CREATE TYPE [myUserTable] AS TAB
L```  
E(
    [Id] [nvarchar](10) NOT NULL)
存储过程:
```js
Create PROCEDURE FETCHUSER
(@USERS [myUserTable] readonly,
   @Firstname varchar(max))
select * from UserTable as ut, @USERS as mt where mt.Id = ut.Id
执行时,我提供了以下输入参数:

@USERS = 'Sample'

但由于错误

"Operand type clash: varchar is incompatible with ..."

展开
收起
祖安文状元 2020-01-05 14:25:45 620 0
1 条回答
写回答
取消 提交回答
  • 我认为以下代码可以帮助您

    CREATE TYPE [dbo].[myUserTable] AS TABLE([Id] [nvarchar](10) NOT NULL);
    
    CREATE PROCEDURE [dbo].FETCHUSER
    @USERS [myUserTable] READONLY,
    @Firstname VARCHAR(MAX)
    AS
    BEGIN
        SELECT *
        FROM   UserTable    AS ut
               JOIN @USERS  AS mt
                    ON  mt.Id = ut.Id;
    END
    GO
    
    
    DECLARE @users [myUserTable]
    
    INSERT INTO @users
    VALUES
       (
        '1'
       ) ,
       (
        '2'
       ) 
    
    EXEC FETCHUSER @users,
         'yourFirstName'
    
    2020-01-05 14:25:56
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
SQL Server在电子商务中的应用与实践 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载