我試圖通過PowerShell傳遞2個參數到我的存儲過程。從powershell傳遞參數到存儲過程
我的代碼如下,當我在PowerShell中運行它沒有錯誤。但是,它似乎並沒有通過參數,因爲我無法得到正確的結果。下面有什麼不對嗎? YQBReport1
的$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server=localhost;Database=AMSDataWarehouse Test;Integrated Security=SSPI"
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.Connection = $SqlConnection
$sqlcmd.CommandText = "YQBReport1"
$param1=$sqlcmd.Parameters.Add("@from" , [System.Data.SqlDbType]::DateTime)
$param1.Value = "2013-03-13"
$param2=$sqlcmd.Parameters.Add("@to" , [System.Data.SqlDbType]::DateTime)
$param2.Value = "2013-03-14"
$SqlConnection.Open()
$sqlcmd.ExecuteNonQuery()
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$DataSet = New-Object System.Data.DataSet
$SqlAdapter.Fill($DataSet)
$SqlConnection.Close()
$SQLResult =$DataSet.Tables[0]
$commands = $SQLResult | foreach-object -process { $_.output }> output.ps1
.\output.ps1
添加代碼
create PROCEDURE YQBreport1
AS
declare @from datetime, @to datetime, @TypeBigAC char(3)
select @TypeBigAC='333'
Select
'$application = New-Object -ComObject Visio.Application;
$documents = $application.Documents;
$document = $documents.Add("AMSGantt.vst");
$pages = $application.ActiveDocument.Pages;
$page = $pages.Item(1);
$shape500 = $page.DrawLine(2,7.9,11,7.9);
$shape500.TextStyle = "Title";
$shape500.LineStyle = "Title";'
as output
union all
select
'$shape500.text = '+'"'+'Assignation de Barrières-' + DATENAME(WEEKDAY,@from)+','+DATENAME(MONTH,@from)+' '+DATENAME(DAY,@from)+','+DATENAME(YEAR,@from)+'"'+';'
as output
Union all
SELECT
'$shape'+cast(ROW_NUMBER()OVER(ORDER BY (SELECT 0)) as varchar)+' = $page.DrawRectangle'+'('+CAST(X1 as varchar)+','+CAST(Y1 as varchar)+','+CAST(X2 as varchar)+','+CAST(Y2 as varchar)+')'+';'
+'$shape'+ cast(ROW_NUMBER()OVER(ORDER BY (SELECT 0)) as varchar)+'.'+'LineStyle = Gantt"'+';'
+'$shape'+ cast(ROW_NUMBER()OVER(ORDER BY (SELECT 0)) as varchar)+'.'+'TextStyle = "Gantt"'+case when left(arrival, 2)='AC' THEN 'Red' ELSE '' END+ CASE WHEN LEFT(Departure, 2)='AC' THEN 'Red' ELSE '' END+';'
+'$shape'+ cast(ROW_NUMBER()OVER(ORDER BY (SELECT 0)) as varchar)+'.FillStyle = "Gantt'+CASE WHEN CHARINDEX(@TypeBigAC, [ACType Iata])<>0 THEN ' Big AC' ELSE '' END+'"'+';'
+'$shape'+ cast(ROW_NUMBER()OVER(ORDER BY (SELECT 0)) as varchar)+'.Text = "'+case when LEN(arrival)<>0 THEN Arrival ELSE '###' END +'/'+ case when len([ACType Iata])<>0 then [ACType Iata] else ' ' end +'/'+ CASE WHEN LEN(Departure)<>0 THEN Departure ELSE '###' END +'"'+';'
+'$shape'+ cast(100+ROW_NUMBER()OVER(ORDER BY (SELECT 0)) as varchar)+' = $page.DrawLine('+cast(X1 -0.5 as varchar)+','+cast(Y1 -0.03 as varchar)+','+cast(X1 +0.5 as varchar)+','+cast(Y1 -0.03 as varchar)+ ')'+';'
+'$shape'+ cast(100+ROW_NUMBER()OVER(ORDER BY (SELECT 0)) as varchar)+'.Text = "'+CONVERT(char(5), [Allocation Start Datetime], 108)+'"'+';'
+'$shape'+ cast(100+ROW_NUMBER()OVER(ORDER BY (SELECT 0)) as varchar)+'.TextStyle = "Times"'+';'
+'$shape'+ cast(100+ROW_NUMBER()OVER(ORDER BY (SELECT 0)) as varchar)+'.LineStyle = "Times"'+';'
+'$shape'+ cast(200+ROW_NUMBER()OVER(ORDER BY (SELECT 0)) as varchar)+' = $page.DrawLine('+cast(X2 -0.1 as varchar)+','+cast(Y1 -0.03 as varchar)+','+cast(X2 +0.1 as varchar)+','+cast(Y1 -0.03 as varchar)+ ')'+';'
+'$shape'+ cast(200+ROW_NUMBER()OVER(ORDER BY (SELECT 0)) as varchar)+'.Text = "'+CONVERT(char(5), [Allocation End Datetime], 108)+'"'+';'
+'$shape'+ cast(200+ROW_NUMBER()OVER(ORDER BY (SELECT 0)) as varchar)+'.TextStyle = "Times"'+';'
+'$shape'+ cast(200+ROW_NUMBER()OVER(ORDER BY (SELECT 0)) as varchar)+'.LineStyle = "Times"'+';'
as output
FROM GanttReport(@from,@to,@TypeBigAC)
union all
select '$shape'+ cast(300+ROW_NUMBER()OVER(ORDER BY (SELECT 0)) as varchar)+' = $page.DrawLine('+cast(X1 as varchar)+','+cast(Y2 as varchar)+','+cast(X2 as varchar)+','+cast(Y1 as varchar)+ ')'
from GanttReportTowingLines(@from,@to,@TypeBigAC)
我添加它,並得到錯誤說,程序YQBReport1沒有參數和參數提供... – Apriljuly 2013-03-11 14:08:05
@Apriljuly顯示'YQBReport1'的代碼。 – 2013-03-11 14:16:32
我聲明瞭from和to的類型,但不是這個值,由於某種原因系統不喜歡我回復太多的'@',因此我在參數前面的代碼中刪除它們以便發佈目的:create PROCEDURE YQBreport1 AS 聲明從datetime到datetime,TypeBigAC char(3) select TypeBigAC ='333' – Apriljuly 2013-03-11 14:20:50