我需要一个数据库变量,因为我从中访问数据的表将存在于各种数据库中,如dBase1,dBase2等。我无法在字符串中使用Select ...因为我想要将Select语句用于游标,这看起来不允许使用字符串和exec命令。这是一个不起作用的例子。任何建议表示赞赏...从@DatabaseName中选择
DECLARE @fromDBase varchar(10), @FundCD char(4), @actID INT,
@PortCode char(4), @FundDecm INT, @PlanCd char(6)
set @FundCD = 'F0XX'
set @actID = 11135408
set @PortCode = 'P001'
set @FundDecm = 3
set @PlanCd = 'XXX001'
DECLARE csFin cursor STATIC LOCAL for
SELECT PortionCode, CashValue, UnitValue, CostValue, UniqueID
from (SELECT DatabaseName FROM [dBase1].[dbo].mPTLDetail WHERE plancode = @PlanCd)
WHERE AccountID = @actID
AND FundCode = @FundCd
AND UnitValue != 0
AND (Cast(Str(UnitValue, 12, @FundDecm) as money) - UnitValue) != 0
这个[问题](http://stackoverflow.com/questions/1045880/using-a-cursor-with-dynamic-sql-in-a-stored-procedure)可能会有帮助也 – coryT 2011-06-04 14:38:24
小心,但是。 SQL注入可能会造成不好的后果。 – 2011-06-04 16:38:00