标签: stored-procedures

在 C# 中更改 DateTime 变量的格式,而不是字符串输出

如何将 C# DateTime 变量的格式从 转换d/M/yyyy HH:mm:ssyyyy/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:指定的转换无效。] …

c# asp.net datetime stored-procedures datetime-format

0
推荐指数
1
解决办法
3089
查看次数

mysql 存储过程更新所有行而不是 1

这是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)

有人可以告诉我如何解决这个问题吗?

mysql sql stored-procedures

0
推荐指数
1
解决办法
1966
查看次数

SSIS 执行 SQL 存储过程输出参数类型不匹配

我在 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 …

sql-server ssis stored-procedures

0
推荐指数
1
解决办法
2万
查看次数

数字或值错误:字符串缓冲区太小 - PHP + Oracle

下面是我的程序

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)

我怎样才能解决这个问题?有什么帮助吗?谢谢

php oracle stored-procedures

0
推荐指数
1
解决办法
3074
查看次数

从另一个存储过程中捕获存储过程的返回值

我正在从另一个内部调用一个存储过程。我在 SP1 中指定了一些返回值(整数)。我想从 SP2 中调用 SP1 并能够捕获这些返回值(并根据它们执行操作)。我怎样才能做到这一点?

sql-server stored-procedures

0
推荐指数
1
解决办法
2710
查看次数

sql中创建存储过程的最佳实践

我曾经遇到过这个问题,创建了一个程序,然后当我想更改它时,我曾经先删除它,然后再次重新创建它。然后我认为这需要很多时间。我必须找到更好的方法!

这是最好的方法,以减轻时间。并且如果您以后需要更改它?

sql t-sql stored-procedures sql-server-2012

0
推荐指数
1
解决办法
3313
查看次数

Get Output Parameter Value in C#

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)

c# sql sql-server parameters stored-procedures

0
推荐指数
1
解决办法
6243
查看次数

c#中的索引超出范围异常

这是我的数据访问层

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)

c# sql-server stored-procedures indexoutofrangeexception

0
推荐指数
1
解决办法
4927
查看次数

TableName 的 Case 语句

我想创建一个存储过程,它根据发送的条件更新表列。我写的查询不起作用。

首先是如果我尝试将表名设置为变量。

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)

结尾

这也抛出异常。

任何其他方式来实现这一目标?

sql-server stored-procedures

0
推荐指数
1
解决办法
923
查看次数

通过 Excel 数据连接调用的存储过程失败

我在 Excel 2007 工作簿中有表格。该表具有到存储过程的外部 SQL 数据连接。在存储过程中,我想在从中查询数据之前清除并填充一个中间表。

如果我没有INSERT语句(我在 Excel 之外插入数据),则存储过程可以工作,但是一旦我尝试将其插入到存储过程中的临时表中,就会出现错误"The query did not run or the database could not be opened"

有趣的是,尽管有错误,存储过程中的插入仍然会被执行——数据在错误之后还在那里。有人知道如何在不触发错误的情况下进行插入吗?

sql excel stored-procedures

0
推荐指数
1
解决办法
2432
查看次数