利用database.dbo.sp_executesql @sql 在当前库处理别一个库的内容

本文介绍如何使用T-SQL创建存储过程,并解释了存储过程的作用范围,即存储过程将针对调用它的数据库执行操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 
Create proc AProc
as
begin
declare @sql nvarchar(2000)
set @sql='create proc BProc'+char(13)+' as begin print '+char(39)+'mmmmmmm'+char(39)
set @sql=@sql+'end'
exec master.dbo.sp_executesql @sql
end
--以上引用 csdn  xzq111

 
 个人理解 存储过程只对自已所在的库里数据进行处理
例如:
1.exec master.dbo.sp_executesql N'select * from table1'
2.exec pubs.dbo.sp_executesql N'select * from table1'
1调用master里的存储过程所有显示的master库里的内容
2.调用pubs里的存储过程所有显示的pubs库里的内容
但pubs里并没有sp_executesql ,因为sp_executesql是系统的存储过程,谁调用它它就对谁起作用
系统规定以sp_开头的存储过程,先在本地查找,若本地没有再到master中查找.


-- EXEC SP_HCP請假資料作廢 'Pre250218143','T00024','2025-02-03 08:00:00','2025-02-07 17:00:00','L26' ALTER PROC [dbo].[SP_HCP請假資料作廢] --@P_SERNO VARCHAR(20), --請假單號 @P_ID_NO_SZ varchar(10), --員工代號(必填) @P_DATETIME_B varchar(20), --請假日期時間(起)格式西元YYYY/MM/DD HH24:MI (必填) @P_DATETIME_E varchar(20), --請假日期時間(迄)格式西元YYYY/MM/DD HH24:MI (必填) @P_REASON varchar(5) -- 假別 (必填) AS BEGIN DECLARE @P_SEGMENT_NO VARCHAR(10)='9999', --公司id(必填) @P_ERROR_TYPE VARCHAR(4)='MSG' --訊息類別 'MSG'多語訊息 'CODE'代碼 'FULL' 代碼加訊息 預設為多語訊息 DECLARE @P_ERROR VARCHAR(1000)='' --錯誤原因 ------------ 向HCP資料庫中INSERT資料 --Print '@P_SERNO的值是:' + @P_SERNO Print '@P_ID_NO_SZ的值是:' + @P_ID_NO_SZ Print '@P_DATETIME_B的值是:' + @P_DATETIME_B Print '@P_DATETIME_E的值是:' + @P_DATETIME_E Print '@P_REASON的值是:' + @P_REASON Print '@P_SEGMENT_NO的值是:' + @P_SEGMENT_NO Print '@P_ERROR_TYPE的值是:' + @P_ERROR_TYPE DECLARE @P_DATETIME_B_1 VARCHAR(30) = CONVERT(VARCHAR, @P_DATETIME_B, 120) DECLARE @P_DATETIME_E_1 VARCHAR(30) = CONVERT(VARCHAR, @P_DATETIME_E, 120) Print '@P_DATETIME_B_1:' + @P_DATETIME_B_1 Print '@P_DATETIME_E_1:' + @P_DATETIME_E_1 DECLARE @P_DATETIME_B_2 DATETIME = CAST(@P_DATETIME_B_1 AS DATETIME) DECLARE @P_DATETIME_E_2 DATETIME = CAST(@P_DATETIME_E_1 AS DATETIME) --Print '@P_DATETIME_B_2:' + @P_DATETIME_B_2 --Print '@P_DATETIME_E_2:' + @P_DATETIME_E_2 EXECUTE ('BEGIN hcp.P_ABSENCE_DELETE_TW(?,?,?,?,?,?,?); END;', @P_ID_NO_SZ, @P_DATETIME_B_2, @P_DATETIME_E_2, @P_REASON, @P_SEGMENT_NO, @P_ERROR output, @P_ERROR_TYPE ) AT SAL_HCPPROD Print @P_ERROR END回傳的資料@P_ID_NO_SZ的值是:T00024 @P_DATETIME_B的值是:2025-02-03 08:00:00 @P_DATETIME_E的值是:2025-02-07 17:00:00 @P_REASON的值是:L26 @P_SEGMENT_NO的值是:9999 @P_ERROR_TYPE的值是:MSG @P_DATETIME_B_1:2025-02-03 08:00:00 @P_DATETIME_E_1:2025-02-07 17:00:00 (1 個資料列受到影響) 完成時間: 2025-06-09T08:13:10.0029236+08:00 為什麼是������!
最新发布
06-10
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值