如何将 C# DateTime 变量的格式从 转换d/M/yyyy HH:mm:ss为yyyy/M/d HH:mm:ss
我不想更改字符串输出,而是 DateTime 变量本身。
我有一个带@date日期时间参数的存储过程。现在我试图将一个 DateTime 变量Today从 C# 传递给这个存储过程。C# DateTime 变量采用格式,d/M/yyyy HH:mm:ss但存储过程需要格式yyyy/M/d HH:mm:ss。
我尝试使用 LINQ to SQL: 代码:
public static object SP_SelectSalesPriceItem()
{
var query = dc.SP_SalesPrice(DateTime.Now);
return query;
}
Run Code Online (Sandbox Code Playgroud)
存储过程:
ALTER PROCEDURE [dbo].[SP_SalesPrice]
@Date datetime
AS
BEGIN
SET NOCOUNT ON;
select SalesPrice.[Item No_]
from Sales Price
where [Starting Date] < @Date and ([Ending Date] > @Date
Run Code Online (Sandbox Code Playgroud)
这是我在 asp.net 中得到的错误: 指定的强制转换无效。
堆栈跟踪:
[InvalidCastException:指定的转换无效。] …
这是MySQL 的过程:
CREATE DEFINER = `root`@`%` PROCEDURE `NewProc`(IN comp_id VARCHAR(40))
BEGIN
...
UPDATE tbl_complaint SET DIDM_Docket_No = '2013-12-12' WHERE Comp_ID = comp_id;
END;
Run Code Online (Sandbox Code Playgroud)
这是我调用程序时的样子:
call gen_docketno('{74651651-9D76-C973-175A-97B9B78608A5}')
Run Code Online (Sandbox Code Playgroud)
是不是因为参数值中的括号和破折号导致程序无法正确更新?因为当我在 sql 查询中运行它时,它可以工作,但在存储过程中却不能。
UPDATE tbl_complaint SET DIDM_Docket_No = '2013-12-12' WHERE Comp_ID = '{BF16E293-6CD2-8BC3-91B1-CF5AC70A090B}';
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我如何解决这个问题吗?
我在 SSIS 包上收到以下错误:
[执行 SQL 任务] 错误:执行查询“EXEC [spGetFileId] @zFileName,@Id”失败并出现以下错误:“分配给变量“User::FileId”的值的类型与当前变量类型不同。变量在执行过程中不能改变类型。变量类型是严格的,Object 类型的变量除外。
我创建了一个执行 SQL 任务,它在 SQL 服务器上执行一个简单的存储过程:
CREATE PROCEDURE [dbo].[spGetFileId]
@zFileName VARCHAR(255),
@Id INT OUTPUT
AS
BEGIN
SET NOCOUNT ON;
SELECT @Id = [Id]
FROM [tblFileLog]
WHERE [zFileName] = @zFileName
END
Run Code Online (Sandbox Code Playgroud)
任务的SQLStatement属性是:
EXEC [spGetFileId] @zFileName, @Id
Run Code Online (Sandbox Code Playgroud)
我有以下SSIS 变量:
- 用户::文件(字符串)
- 用户::文件 ID (Int)
并将参数映射到 SQL 任务上,如下所示:
- 变量 | 方向 | 类型 | 范围
- 用户::文件| 输入 | 字符串 | @z文件名
- 用户::文件 ID | 输出 | 整数32 …
下面是我的程序
NOBL_TEC_TEST_PROC(v1 number,v2 out number)
Run Code Online (Sandbox Code Playgroud)
我的模型功能
public function testProc()
{
$result = '';
$db = "orcl";
$conn = oci_connect("***", "****", $db);
$sql = 'begin NOBL_TEC_TEST_PROC(222, :seqno); end;';
$stmt = oci_parse($conn,$sql);
oci_bind_by_name($stmt, ':seqno', $result);
oci_execute($stmt);
return $result;
}
Run Code Online (Sandbox Code Playgroud)
如果我给 IN 值 <10 它工作正常,但是当我尝试给 IN 值 >10 它给出以下错误。
<b>Warning</b>: oci_execute(): ORA-06502: PL/SQL: numeric or value error: character string buffer too small ORA-06512: at line 1 in....
Run Code Online (Sandbox Code Playgroud)
我怎样才能解决这个问题?有什么帮助吗?谢谢
我正在从另一个内部调用一个存储过程。我在 SP1 中指定了一些返回值(整数)。我想从 SP2 中调用 SP1 并能够捕获这些返回值(并根据它们执行操作)。我怎样才能做到这一点?
我曾经遇到过这个问题,创建了一个程序,然后当我想更改它时,我曾经先删除它,然后再次重新创建它。然后我认为这需要很多时间。我必须找到更好的方法!
这是最好的方法,以减轻时间。并且如果您以后需要更改它?
I have a stored procedure with an OUTPUT parameter:
CREATE PROCEDURE [dbo].[myStoredProcedure]
(@myValue NVARCHAR(100) OUTPUT)
AS
BEGIN
SET @myValue = (SELECT myValue FROM myTable WHERE something = 1)
SElECT @myValue;
END
Run Code Online (Sandbox Code Playgroud)
My C# class:
public string getOutPut()
{
string shortFooter;
string sql = "myStoredProcedure";
string connStr = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
using (SqlConnection DBConn = new SqlConnection(connStr))
{
using (SqlCommand DBCmd = new SqlCommand(sql, DBConn))
{
try
{
DBConn.Open();
DBCmd.CommandType = CommandType.StoredProcedure;
SqlParameter newSqlParam = new SqlParameter();
newSqlParam.ParameterName = "@myValue";
newSqlParam.SqlDbType = SqlDbType.NVarChar; …Run Code Online (Sandbox Code Playgroud) 这是我的数据访问层
public string GetMinISecPer(ISecuritySummmary iSecObj)
{
try
{
string miniSecPer = null;
SelectCommand cmd = new SelectCommand(SPConst.GetMinIsecPer);
cmd["@SubISUName"] = iSecObj.SubISUName;
using (DBDataReaderWrapper reader = cmd.Execute())
{
while (reader.Read())
{
double miniSecPercent = Convert.ToDouble(reader.String["testValue"]);
miniSecPer = Convert.ToString(miniSecPercent);
}
}
return miniSecPer;
}
catch (Exception e)
{
return "";
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的存储过程
ALTER PROCEDURE [dbo].[GetMinIsecPer]
@SubISUName varchar(max)
AS
BEGIN
DECLARE @MinIsecPer float;
DECLARE @testValue varchar(20);
set @testValue='value';
set @MinIsecPer=(select MIN(iSecComplPer) from ISecurityStatistics IST
left outer join Relationship R on R.Id=IST.RelationshipId
left outer …Run Code Online (Sandbox Code Playgroud) 我想创建一个存储过程,它根据发送的条件更新表列。我写的查询不起作用。
首先是如果我尝试将表名设置为变量。
Create Procedure Proc_Test
@Tblname varchar(20)
AS BEGIN
Update @Tblname
Set IsValid = 1;
End
Run Code Online (Sandbox Code Playgroud)
这失败了。
我尝试过的第二个是 case 语句
创建过程 Proc_Test @Tblname varchar(20) AS BEGIN
Case @Tblname
WHEN 1 THEN Update tbl1 set ISValid = 1;
WHEN 2 THEN Update tbl2 set ISValid = 1;
End
Run Code Online (Sandbox Code Playgroud)
结尾
这也抛出异常。
任何其他方式来实现这一目标?
我在 Excel 2007 工作簿中有表格。该表具有到存储过程的外部 SQL 数据连接。在存储过程中,我想在从中查询数据之前清除并填充一个中间表。
如果我没有INSERT语句(我在 Excel 之外插入数据),则存储过程可以工作,但是一旦我尝试将其插入到存储过程中的临时表中,就会出现错误"The query did not run or the database could not be opened"。
有趣的是,尽管有错误,存储过程中的插入仍然会被执行——数据在错误之后还在那里。有人知道如何在不触发错误的情况下进行插入吗?