我有以下SQL表:角色SQL_VARIANT成DATA_TYPE爲varchar提供
Types table
--------------------------------------
|Name(varchar(50))|Type (varchar(50))|
--------------------------------------
| Car | varchar(50) |
| Apples | int |
--------------------------------------
我使用另一個表用於存儲值,諸如:
Apples table:
----------------------------
|Value (providedType - int)|
----------------------------
|50 |
|60 |
----------------------------
將值插入這些表我使用存儲過程(其中的一部分):
CREATE PROCEDURE [dbo].[AddValue]
@value sql_variant
@name varchar(50)
@tableName (50)
AS
BEGIN
DECLARE @Sql NVARCHAR(MAX)
DECLARE @valueType VARCHAR(50)
SET @valueType = (SELECT [Type] FROM [dbo].[Types] WHERE [Name] = @name)
SET @Sql = N'INSERT INTO [dbo].'+ @tableName + N' VALUES(' + @value + N')'
EXECUTE sp_executesql @Sql
...
動態執行會拋出一個異常,隱式ca不允許使用sql_variant。有什麼辦法可以將sql_variant類型轉換爲作爲varchar提供的類型嗎? 如:
CONVERT(@valueType, @value)
哪裏@ValueType爲varchar不datetype
根據你的代碼,它看起來像你使用的是sql-server。但是你已經標記了mysql。請標記適當的rdbms – ughai
表格列「Name」的默認大小是多少?你在哪裏聲明變量@Sql ???/ –
@ArunprasanthKV查看更新後的問題 –