關於EXEC執行SQL語句報錯

2021-06-11 22:11:06 字數 561 閱讀 6041

先看sql語句

create procedure [dbo].[sp_demo]

(@id bigint  --bigint整數的引數--)as

begin

declare @sql nvarchar(4000)

set @sql='select * from t_table where [id]=『+@id

exec(@sql)

end執行這個語句會報錯誤  從資料型別 varchar 轉換為 bigint 時出錯。

一開始認為是引數的型別不對,於是通過轉換函式進行轉換

set @sql='select * from t_table where [id]=『+convert(bigint,@id)

但是還是會報錯

最後googel一下,發現了乙個定理

帶引數的話,需要exec中進行拼接進行執行

set @sql='select * from t_table where [id]= 『

exec(@sql+@id)

這樣執行便不會報錯了

Hive執行SQL語句報錯

用hive執行以下sql語句 select count id from test 控制台輸出以下錯誤資訊 error during job,obtaining debugging information.failed execution error,return code 2 from org.ap...

sql 語句 exec 執行字串

create procedure dbo alldnn newspublish deletearticlebyarticle articleid nvarchar 200 as declare sql nvarchar 1000 set sql delete dbo.site news articl...

普通SQL語句可以用Exec執行

例如儲存過名為 myprocedure use adventureworks create procedure myprocedure city varchar 20 as begin select from person.address end exec myprocedure city both...