當前位置:首頁 » 編程語言 » sqlserverexecsql

sqlserverexecsql

發布時間: 2022-06-06 19:03:04

sql server 中EXEC的用法

欄位名和表名在EXEC裡面必須是確定的

你可以換一種形式比如:
select @temp=left_code from item_code where filter_name=@filter_name

⑵ SQL SERVER 2008 關於用EXEC執行存儲過程的問題

不帶 exec的執行存儲過程必須是事務的第一句
我舉個例子你就明白了

比如說我建立了一個存儲過程 procName

第一種情況:不用exec的
create table ()..
GO --注意這里的GO 表示要開始下一個事務了
procName --這里直接使用存儲過程名字 就是調用了

第二種情況:一定要使用 exec的
create table()
exec procName --你看這里,它不是作為這個事務的第一句開始的 所以要帶上exec

⑶ sql server 如獲得exec()執行語句的返回值

其實要分兩種,一種是成功執行,另一種是執行失敗拋出錯誤
建議使用sqlserver2005以後(看你用了max應該是2005以後的版本)新增的結構體begin try...end try...begin catch...end catch來捕獲

ps.題外話,要保存中文,最好使用nvarchar,雖然存儲空間增大了一倍,但是會避免有些情況下的亂碼問題

⑷ sql server 2005如何使用exec命令

desc是查詢表結構的命令、
exec是執行過程的命令、
兩個不一樣
exec 後面跟的是過程名、跟表名當然會報錯

⑸ sql server中exec(賦給sql語句的變數)如何用變數保存值

好象有點明白了。假設你的存儲過程有一個輸入一個輸出參數,並已經建立了這個存儲過程,那你只要宣布兩個變數分別為輸入和輸出 (比如如下語句):
DECLARE @para_inINT,@para_out VARCHAR(100);
DECLARE @sqlcmd varchar(500);
SET @para_in=2;
EXEC [你的存儲過程] @para_in, @para_out;
PRINT @para_out;
你可以看到你的輸出結果被列印出來。你還可以將@para_out拼到@sqlcmd中,然後執行;或做為另一存儲過程的輸入參數。
SET @sqlcmd = 'PRINT ''This isoutput parameter -' + @para_out + '''';
EXEC (@sqlcmd);或EXEC [另一存儲過程] @para_out;
旦願這回答了你的問題 :-)

⑹ sql server 中的EXEC有什麼用!

exec函數族的作用為根據指定的文件名找到可執行文件,並用它來取代調用進程的內容,換句話說,就是在調用進程內部執行一個可執行文件。這里的可執行文件既可以是二進制文件,也可以是任何Linux下可執行的腳本文件。

exec函數族的函數執行成功後不會返回,因為調用進程的實體,包括代碼段,數據段和堆棧等都已經被新的內容取代,只留下進程ID等一些表面上的信息仍保持原樣,看上去還是舊的軀殼,卻已經注入了新的靈魂。只有調用失敗了,它們才會返回一個-1,從原程序的調用點接著往下執行。



(6)sqlserverexecsql擴展閱讀

使用exec函數族主要有兩種情況:

1、當進程認為自己不能再為系統和用戶做出任何貢獻時,就可以調用exec函數族中的任意一個函數讓自己重生。

2、如果一個進程想執行另一個程序,那麼它就可以調用fork函數新建一個進程,然後調用exec函數族中的任意一個函數,這樣看起來就像通過執行應用程序而產生了一個新進程(這種情況非常普遍)。

⑺ sqlserver中如何在用戶定義的函數里使用exec

這里我舉個例子,假如有一個函數dbo.NumAdd用來計算加法,那它可能是這樣的:
DROP FUNCTION dbo.NumAdd
GO
CREATE FUNCTION dbo.NumAdd
( @A SMALLINT,
@B SMALLINT
)
RETURNS INT
AS
BEGIN
DECLARE @Ret INT
SET @Ret = ISNULL(@A,0) + ISNULL(@B,0)
RETURN @Ret
END

你可以使用這樣的方式調用函數並得到返回值:
DECLARE @M INT
SET @M = dbo.NumAdd(500,700)
select @M

現在,把這個函數修改成第一種使用存儲過程的方式:
DROP Procere dbo.NumAdd1
GO
CREATE Procere dbo.NumAdd1
( @A SMALLINT,
@B SMALLINT,
@Ret INT OUTPUT
)
AS
BEGIN
SET @Ret = ISNULL(@A,0) + ISNULL(@B,0)
END
GO

那麼,你就可以通過下列的方法調用這個實際和函數dbo.NumAdd功能相同的存儲過程:
DECLARE @M1 INT
EXEC dbo.NumAdd1 500,600,@M1 OUTPUT
SELECT @M1

這種方法是對標量函數較好的處理方法,而且,一個存儲過程可以使用一個或者多個帶有OUTPUT的參數來返回值。

再看第二種方法修改為存儲過程的方式:
DROP Procere dbo.NumAdd2
GO
CREATE Procere dbo.NumAdd2
( @A SMALLINT,
@B SMALLINT
)
AS
BEGIN
DECLARE @Ret INT
SET @Ret = ISNULL(@A,0) + ISNULL(@B,0)
SELECT @Ret
END
GO

這樣,你就可以使用下面的方法來調用:

DECLARE @M2 INT
CREATE TABLE #Temp (Result INT)
INSERT #Temp EXEC dbo.NumAdd2 800,600
SELECT TOP 1 @M2 = Result FROM #Temp
DROP TABLE #Temp
SELECT @M2

列出的這兩種方法都是把函數改成存儲過程的方法,而且在存儲過程中可以使用EXEC、PRINT等函數中不能使用的內容。

這個解釋你明白了嗎?

熱點內容
網吧怎麼通過伺服器玩網路游戲 發布:2025-02-08 19:59:52 瀏覽:912
文檔編輯加密 發布:2025-02-08 19:56:31 瀏覽:390
phpmysql存儲過程實例 發布:2025-02-08 19:54:40 瀏覽:159
淘寶賣的地下城腳本 發布:2025-02-08 19:41:40 瀏覽:61
安卓怎麼把提升畫質關了 發布:2025-02-08 19:40:11 瀏覽:361
我想你加密 發布:2025-02-08 19:39:24 瀏覽:215
java手機號正則表達式 發布:2025-02-08 19:34:50 瀏覽:353
ue加密 發布:2025-02-08 19:34:05 瀏覽:476
滁州壓縮機 發布:2025-02-08 19:34:03 瀏覽:882
壓縮棉花絮片 發布:2025-02-08 19:33:12 瀏覽:395