这看起来应该很简单,但是...当我在第二个参数中设置一个值时,我得到一个错误,3421,告诉我我的&#34;值是错误的类型&#34;。< / p>
这是我的表:
CREATE TABLE [dbo].[Emails]
(
[Id] INT NOT NULL PRIMARY KEY IDENTITY,
[ManagerList] BIT NOT NULL,
[FixtureList] BIT NOT NULL,
[Shomatch] BIT NOT NULL,
[Newsletter] BIT NOT NULL,
[Turn] BIT NOT NULL,
[Started] BIT NOT NULL,
[Sent] BIT NOT NULL,
[Acknowledged] BIT NOT NULL,
[League] INT NOT NULL,
CONSTRAINT [FK_Emails_League] FOREIGN KEY ([League]) REFERENCES [Leagues]([Id])
)
这是我的存储过程:
CREATE PROCEDURE [dbo].[UpdateEmails]
@pLeagueId INT,
@pFixtureList BIT
AS
UPDATE [dbo].[Emails]
SET [FixtureList] = @pFixtureList
WHERE [League] = @pLeagueId;
这是我的代码:
Option Explicit
Option Base 1
Option Compare Text
Sub UpdateEmailsFixtureList()
Set KA_Com = New ADODB.Command
KA_Com.CommandText = "UpdateEmails"
KA_Com.CommandType = adCmdStoredProc
Set KA_Parameter = KA_Com.CreateParameter(Name:="pLeagueId", Type:=adInteger)
KA_Com.Parameters.Append KA_Parameter
KA_Com.Parameters("pLeagueId").Value = KA_RS_Leagues![ID]
Set KA_Parameter = KA_Com.CreateParameter(Name:="pFixtureList", Type:=adBinary, Size:=1)
KA_Com.Parameters.Append KA_Parameter
KA_Com.Parameters("pFixtureList").Value = 1 <<< ERROR 3421 on this line
Set KA_RS_Leagues = KA_Com.Execute
End Sub
感谢您的帮助,我无法理解看起来如此简单的事情会如此顽固!
答案 0 :(得分:1)
不是将参数作为位传递,而是将其更改为Char和Pass,将过程更改为
SQL> alter session set nls_date_format = 'dd.mm.yyyy';
Session altered.
SQL> select ename, hiredate, f_age(hiredate) result
2 from emp;
ENAME HIREDATE RESULT
---------- ---------- ------------------------------
KING 17.11.1981 36 years 2 months 27 days
BLAKE 01.05.1981 36 years 9 months 12 days
CLARK 09.06.1981 36 years 8 months 4 days
JONES 02.04.1981 36 years 10 months 11 days
SCOTT 09.12.1982 35 years 2 months 4 days
FORD 03.12.1981 36 years 2 months 10 days
SMITH 17.12.1980 37 years 1 months 27 days
ALLEN 20.02.1981 36 years 11 months 24 days
WARD 22.02.1981 36 years 11 months 22 days
MARTIN 28.09.1981 36 years 4 months 16 days
TURNER 08.09.1981 36 years 5 months 5 days
ADAMS 12.01.1983 35 years 1 months 1 days
JAMES 03.12.1981 36 years 2 months 10 days
MILLER 23.01.1982 36 years 0 months 21 days
14 rows selected.
SQL>
答案 1 :(得分:0)
将值传递给true
或false
,因为数据库/ sp(@pFixtureList位)中的类型为BIT
,它将接受true/false
作为值并显示{{分别在表格中。}
1/0